/* A Bison parser, made by GNU Bison 3.0.4.  */

/* Bison implementation for Yacc-like parsers in C

   Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc.

   This program is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation, either version 3 of the License, or
   (at your option) any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */

/* As a special exception, you may create a larger work that contains
   part or all of the Bison parser skeleton and distribute that work
   under terms of your choice, so long as that work isn't itself a
   parser generator using the skeleton or a modified version thereof
   as a parser skeleton.  Alternatively, if you modify or redistribute
   the parser skeleton itself, you may (at your option) remove this
   special exception, which will cause the skeleton and the resulting
   Bison output files to be licensed under the GNU General Public
   License without this special exception.

   This special exception was added by the Free Software Foundation in
   version 2.2 of Bison.  */

/* C LALR(1) parser skeleton written by Richard Stallman, by
   simplifying the original so-called "semantic" parser.  */

/* All symbols defined below should begin with yy or YY, to avoid
   infringing on user name space.  This should be done even for local
   variables, as they might otherwise be expanded by user macros.
   There are some unavoidable exceptions within include files to
   define necessary library symbols; they are noted "INFRINGES ON
   USER NAME SPACE" below.  */

/* Identify Bison output.  */
#define YYBISON 1

/* Bison version.  */
#define YYBISON_VERSION "3.0.4"

/* Skeleton name.  */
#define YYSKELETON_NAME "yacc.c"

/* Pure parsers.  */
#define YYPURE 0

/* Push parsers.  */
#define YYPUSH 0

/* Pull parsers.  */
#define YYPULL 1




/* Copy the first part of user declarations.  */
#line 30 "core/cfg.y" /* yacc.c:339  */


#include <stdlib.h>
#include <stdio.h>
#include <stdarg.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/ip.h>
#include <arpa/inet.h>
#include <string.h>
#include <errno.h>
#include "route_struct.h"
#include "globals.h"
#include "shm_init.h"
#include "route.h"
#include "switch.h"
#include "dprint.h"
#include "sr_module.h"
#include "modparam.h"
#include "ip_addr.h"
#include "resolve.h"
#include "socket_info.h"
#include "name_alias.h"
#include "ut.h"
#include "dset.h"
#include "select.h"
#include "flags.h"
#include "tcp_init.h"
#include "tcp_options.h"
#include "sctp_core.h"
#include "pvar.h"
#include "lvalue.h"
#include "rvalue.h"
#include "sr_compat.h"
#include "msg_translator.h"
#include "async_task.h"

#include "kemi.h"
#include "ppcfg.h"
#include "pvapi.h"
#include "config.h"
#include "daemonize.h"
#include "cfg_core.h"
#include "cfg/cfg.h"
#ifdef CORE_TLS
#include "tls/tls_config.h"
#endif
#include "timer_ticks.h"

#ifdef DEBUG_DMALLOC
#include <dmalloc.h>
#endif

/* hack to avoid alloca usage in the generated C file (needed for compiler
 with no built in alloca, like icc*/
#undef _ALLOCA_H

#define onsend_check(s) \
	do{\
		if (rt!=ONSEND_ROUTE) yyerror( s " allowed only in onsend_routes");\
	}while(0)

	#define IF_AUTO_BIND_IPV6(x) x

#ifdef USE_DNS_CACHE
	#define IF_DNS_CACHE(x) x
#else
	#define IF_DNS_CACHE(x) warn("dns cache support not compiled in")
#endif

#ifdef USE_DNS_FAILOVER
	#define IF_DNS_FAILOVER(x) x
#else
	#define IF_DNS_FAILOVER(x) warn("dns failover support not compiled in")
#endif

#ifdef USE_NAPTR
	#define IF_NAPTR(x) x
#else
	#define IF_NAPTR(x) warn("dns naptr support not compiled in")
#endif

#ifdef USE_DST_BLOCKLIST
	#define IF_DST_BLOCKLIST(x) x
#else
	#define IF_DST_BLOCKLIST(x) warn("dst blocklist support not compiled in")
#endif

#ifdef USE_SCTP
	#define IF_SCTP(x) x
#else
	#define IF_SCTP(x) warn("sctp support not compiled in")
#endif

#ifdef USE_RAW_SOCKS
	#define IF_RAW_SOCKS(x) x
#else
	#define IF_RAW_SOCKS(x) warn("raw socket support not compiled in")
#endif


extern int yylex();
/* safer then using yytext which can be array or pointer */
extern char* yy_number_str;

static void yyerror(char* s, ...);
static void yyerror_at(struct cfg_pos* pos, char* s, ...);
static char* tmp = NULL;
static int i_tmp = 0;
static struct socket_id* lst_tmp = NULL;
static struct name_lst* nl_tmp = NULL;
static int rt = 0;  /* Type of route block for find_export */
static str* str_tmp = NULL;
static str s_tmp = STR_NULL;
static struct ip_addr* ip_tmp = NULL;
static struct avp_spec* s_attr = NULL;
static select_t sel;
static select_t* sel_ptr = NULL;
static pv_spec_t* pv_spec = NULL;
static struct action *mod_func_action = NULL;
static struct lvalue* lval_tmp = NULL;
static struct rvalue* rval_tmp = NULL;
static struct rval_expr* rve_tmp = NULL;

static void warn(char* s, ...);
static void warn_at(struct cfg_pos* pos, char* s, ...);
static void get_cpos(struct cfg_pos* pos);
static struct rval_expr* mk_rve_rval(enum rval_type, void* v);
static struct rval_expr* mk_rve1(enum rval_expr_op op, struct rval_expr* rve1);
static struct rval_expr* mk_rve2(enum rval_expr_op op, struct rval_expr* rve1,
									struct rval_expr* rve2);
static int rval_expr_int_check(struct rval_expr *rve);
static int warn_ct_rve(struct rval_expr *rve, char* name);
static struct socket_id* mk_listen_id(char*, int, int);
static struct name_lst* mk_name_lst(char* name, int flags);
static struct socket_id* mk_listen_id2(struct name_lst*, int, int);
static void free_name_lst(struct name_lst* lst);
static void free_socket_id_lst(struct socket_id* i);

static struct case_stms* mk_case_stm(struct rval_expr* ct, int is_re,
									struct action* a, int* err);
static int case_check_type(struct case_stms* stms);
static int case_check_default(struct case_stms* stms);
static int mod_f_params_pre_fixup(struct action* a);
static void free_mod_func_action(struct action* a);


extern int line;
extern int column;
extern int startcolumn;
extern int startline;
extern char *finame;
extern char *routename;
extern char *default_routename;

#define set_cfg_pos(x) \
	do{\
		if(x) {\
		(x)->cline = line;\
		(x)->cfile = (finame!=0)?finame:((cfg_file!=0)?cfg_file:"default");\
		(x)->rname = (routename!=0)?routename:((default_routename!=0)?default_routename:"DEFAULT");\
		}\
	}while(0)



#line 234 "core/cfg.tab.c" /* yacc.c:339  */

# ifndef YY_NULLPTR
#  if defined __cplusplus && 201103L <= __cplusplus
#   define YY_NULLPTR nullptr
#  else
#   define YY_NULLPTR 0
#  endif
# endif

/* Enabling verbose error messages.  */
#ifdef YYERROR_VERBOSE
# undef YYERROR_VERBOSE
# define YYERROR_VERBOSE 1
#else
# define YYERROR_VERBOSE 0
#endif

/* In a future release of Bison, this section will be replaced
   by #include "cfg.tab.h".  */
#ifndef YY_YY_CORE_CFG_TAB_H_INCLUDED
# define YY_YY_CORE_CFG_TAB_H_INCLUDED
/* Debug traces.  */
#ifndef YYDEBUG
# define YYDEBUG 0
#endif
#if YYDEBUG
extern int yydebug;
#endif

/* Token type.  */
#ifndef YYTOKENTYPE
# define YYTOKENTYPE
  enum yytokentype
  {
    FORWARD = 258,
    FORWARD_TCP = 259,
    FORWARD_TLS = 260,
    FORWARD_SCTP = 261,
    FORWARD_UDP = 262,
    EXIT = 263,
    DROP = 264,
    RETURN = 265,
    BREAK = 266,
    LOG_TOK = 267,
    ERROR = 268,
    ROUTE = 269,
    ROUTE_REQUEST = 270,
    ROUTE_FAILURE = 271,
    ROUTE_ONREPLY = 272,
    ROUTE_REPLY = 273,
    ROUTE_BRANCH = 274,
    ROUTE_SEND = 275,
    ROUTE_EVENT = 276,
    EXEC = 277,
    SET_HOST = 278,
    SET_HOSTPORT = 279,
    SET_HOSTPORTTRANS = 280,
    PREFIX = 281,
    STRIP = 282,
    STRIP_TAIL = 283,
    SET_USERPHONE = 284,
    APPEND_BRANCH = 285,
    REMOVE_BRANCH = 286,
    CLEAR_BRANCHES = 287,
    SET_USER = 288,
    SET_USERPASS = 289,
    SET_PORT = 290,
    SET_URI = 291,
    REVERT_URI = 292,
    FORCE_RPORT = 293,
    ADD_LOCAL_RPORT = 294,
    LOCAL_RPORT = 295,
    FORCE_TCP_ALIAS = 296,
    UDP_MTU = 297,
    UDP_MTU_TRY_PROTO = 298,
    UDP4_RAW = 299,
    UDP4_RAW_MTU = 300,
    UDP4_RAW_TTL = 301,
    IF = 302,
    ELSE = 303,
    SET_ADV_ADDRESS = 304,
    SET_ADV_PORT = 305,
    FORCE_SEND_SOCKET = 306,
    SET_FWD_NO_CONNECT = 307,
    SET_RPL_NO_CONNECT = 308,
    SET_FWD_CLOSE = 309,
    SET_RPL_CLOSE = 310,
    SWITCH = 311,
    CASE = 312,
    DEFAULT = 313,
    WHILE = 314,
    CFG_SELECT = 315,
    CFG_RESET = 316,
    URIHOST = 317,
    URIPORT = 318,
    MAX_LEN = 319,
    SETFLAG = 320,
    RESETFLAG = 321,
    ISFLAGSET = 322,
    SETAVPFLAG = 323,
    RESETAVPFLAG = 324,
    ISAVPFLAGSET = 325,
    METHOD = 326,
    URI = 327,
    FROM_URI = 328,
    TO_URI = 329,
    SRCIP = 330,
    SRCPORT = 331,
    DSTIP = 332,
    DSTPORT = 333,
    TOIP = 334,
    TOPORT = 335,
    SNDIP = 336,
    SNDPORT = 337,
    SNDPROTO = 338,
    SNDAF = 339,
    PROTO = 340,
    AF = 341,
    MYSELF = 342,
    MSGLEN = 343,
    UDP = 344,
    TCP = 345,
    TLS = 346,
    SCTP = 347,
    WS = 348,
    WSS = 349,
    DEBUG_V = 350,
    FORK = 351,
    FORK_DELAY = 352,
    MODINIT_DELAY = 353,
    LOGSTDERROR = 354,
    LOGFACILITY = 355,
    LOGNAME = 356,
    LOGCOLOR = 357,
    LOGPREFIX = 358,
    LOGPREFIXMODE = 359,
    LOGENGINETYPE = 360,
    LOGENGINEDATA = 361,
    XAVPVIAPARAMS = 362,
    XAVPVIAFIELDS = 363,
    LISTEN = 364,
    ADVERTISE = 365,
    STRNAME = 366,
    ALIAS = 367,
    SR_AUTO_ALIASES = 368,
    DNS = 369,
    REV_DNS = 370,
    DNS_TRY_IPV6 = 371,
    DNS_TRY_NAPTR = 372,
    DNS_SRV_LB = 373,
    DNS_UDP_PREF = 374,
    DNS_TCP_PREF = 375,
    DNS_TLS_PREF = 376,
    DNS_SCTP_PREF = 377,
    DNS_RETR_TIME = 378,
    DNS_SLOW_QUERY_MS = 379,
    DNS_RETR_NO = 380,
    DNS_SERVERS_NO = 381,
    DNS_USE_SEARCH = 382,
    DNS_SEARCH_FMATCH = 383,
    DNS_NAPTR_IGNORE_RFC = 384,
    DNS_CACHE_INIT = 385,
    DNS_USE_CACHE = 386,
    DNS_USE_FAILOVER = 387,
    DNS_CACHE_FLAGS = 388,
    DNS_CACHE_NEG_TTL = 389,
    DNS_CACHE_MIN_TTL = 390,
    DNS_CACHE_MAX_TTL = 391,
    DNS_CACHE_MEM = 392,
    DNS_CACHE_GC_INT = 393,
    DNS_CACHE_DEL_NONEXP = 394,
    DNS_CACHE_REC_PREF = 395,
    AUTO_BIND_IPV6 = 396,
    BIND_IPV6_LINK_LOCAL = 397,
    IPV6_HEX_STYLE = 398,
    DST_BLST_INIT = 399,
    USE_DST_BLST = 400,
    DST_BLST_MEM = 401,
    DST_BLST_TTL = 402,
    DST_BLST_GC_INT = 403,
    DST_BLST_UDP_IMASK = 404,
    DST_BLST_TCP_IMASK = 405,
    DST_BLST_TLS_IMASK = 406,
    DST_BLST_SCTP_IMASK = 407,
    IP_FREE_BIND = 408,
    PORT = 409,
    STAT = 410,
    STATS_NAMESEP = 411,
    CHILDREN = 412,
    SOCKET_WORKERS = 413,
    ASYNC_WORKERS = 414,
    ASYNC_USLEEP = 415,
    ASYNC_NONBLOCK = 416,
    ASYNC_WORKERS_GROUP = 417,
    CHECK_VIA = 418,
    PHONE2TEL = 419,
    MEMLOG = 420,
    MEMDBG = 421,
    MEMSUM = 422,
    MEMSAFETY = 423,
    MEMJOIN = 424,
    MEMSTATUSMODE = 425,
    SIP_PARSER_LOG = 426,
    SIP_PARSER_MODE = 427,
    CORELOG = 428,
    SIP_WARNING = 429,
    SERVER_SIGNATURE = 430,
    SERVER_HEADER = 431,
    USER_AGENT_HEADER = 432,
    REPLY_TO_VIA = 433,
    LOADMODULE = 434,
    LOADMODULEX = 435,
    LOADPATH = 436,
    MODPARAM = 437,
    MODPARAMX = 438,
    CFGENGINE = 439,
    MAXBUFFER = 440,
    SQL_BUFFER_SIZE = 441,
    USER = 442,
    GROUP = 443,
    CHROOT = 444,
    WDIR = 445,
    RUNDIR = 446,
    MHOMED = 447,
    DISABLE_TCP = 448,
    TCP_ACCEPT_ALIASES = 449,
    TCP_ACCEPT_UNIQUE = 450,
    TCP_CONNECTION_MATCH = 451,
    TCP_CHILDREN = 452,
    TCP_CONNECT_TIMEOUT = 453,
    TCP_SEND_TIMEOUT = 454,
    TCP_CON_LIFETIME = 455,
    TCP_POLL_METHOD = 456,
    TCP_MAX_CONNECTIONS = 457,
    TLS_MAX_CONNECTIONS = 458,
    TCP_NO_CONNECT = 459,
    TCP_SOURCE_IPV4 = 460,
    TCP_SOURCE_IPV6 = 461,
    TCP_OPT_FD_CACHE = 462,
    TCP_OPT_BUF_WRITE = 463,
    TCP_OPT_CONN_WQ_MAX = 464,
    TCP_OPT_WQ_MAX = 465,
    TCP_OPT_RD_BUF = 466,
    TCP_OPT_WQ_BLK = 467,
    TCP_OPT_DEFER_ACCEPT = 468,
    TCP_OPT_DELAYED_ACK = 469,
    TCP_OPT_SYNCNT = 470,
    TCP_OPT_LINGER2 = 471,
    TCP_OPT_KEEPALIVE = 472,
    TCP_OPT_KEEPIDLE = 473,
    TCP_OPT_KEEPINTVL = 474,
    TCP_OPT_KEEPCNT = 475,
    TCP_OPT_CRLF_PING = 476,
    TCP_OPT_ACCEPT_NO_CL = 477,
    TCP_OPT_ACCEPT_HEP3 = 478,
    TCP_OPT_ACCEPT_HAPROXY = 479,
    TCP_CLONE_RCVBUF = 480,
    TCP_REUSE_PORT = 481,
    DISABLE_TLS = 482,
    ENABLE_TLS = 483,
    TLSLOG = 484,
    TLS_PORT_NO = 485,
    TLS_METHOD = 486,
    TLS_HANDSHAKE_TIMEOUT = 487,
    TLS_SEND_TIMEOUT = 488,
    SSLv23 = 489,
    SSLv2 = 490,
    SSLv3 = 491,
    TLSv1 = 492,
    TLS_VERIFY = 493,
    TLS_REQUIRE_CERTIFICATE = 494,
    TLS_CERTIFICATE = 495,
    TLS_PRIVATE_KEY = 496,
    TLS_CA_LIST = 497,
    DISABLE_SCTP = 498,
    ENABLE_SCTP = 499,
    SCTP_CHILDREN = 500,
    ADVERTISED_ADDRESS = 501,
    ADVERTISED_PORT = 502,
    DISABLE_CORE = 503,
    OPEN_FD_LIMIT = 504,
    SHM_MEM_SZ = 505,
    SHM_FORCE_ALLOC = 506,
    MLOCK_PAGES = 507,
    REAL_TIME = 508,
    RT_PRIO = 509,
    RT_POLICY = 510,
    RT_TIMER1_PRIO = 511,
    RT_TIMER1_POLICY = 512,
    RT_TIMER2_PRIO = 513,
    RT_TIMER2_POLICY = 514,
    MCAST_LOOPBACK = 515,
    MCAST_TTL = 516,
    MCAST = 517,
    TOS = 518,
    PMTU_DISCOVERY = 519,
    KILL_TIMEOUT = 520,
    MAX_WLOOPS = 521,
    PVBUFSIZE = 522,
    PVBUFSLOTS = 523,
    PVCACHELIMIT = 524,
    PVCACHEACTION = 525,
    HTTP_REPLY_PARSE = 526,
    VERSION_TABLE_CFG = 527,
    VERBOSE_STARTUP = 528,
    ROUTE_LOCKS_SIZE = 529,
    WAIT_WORKER1_MODE = 530,
    WAIT_WORKER1_TIME = 531,
    WAIT_WORKER1_USLEEP = 532,
    CFG_DESCRIPTION = 533,
    SERVER_ID = 534,
    KEMI = 535,
    ONSEND_ROUTE_CALLBACK = 536,
    REPLY_ROUTE_CALLBACK = 537,
    EVENT_ROUTE_CALLBACK = 538,
    RECEIVED_ROUTE_CALLBACK = 539,
    RECEIVED_ROUTE_MODE = 540,
    PRE_ROUTING_CALLBACK = 541,
    MAX_RECURSIVE_LEVEL = 542,
    MAX_BRANCHES_PARAM = 543,
    LATENCY_CFG_LOG = 544,
    LATENCY_LOG = 545,
    LATENCY_LIMIT_DB = 546,
    LATENCY_LIMIT_ACTION = 547,
    LATENCY_LIMIT_CFG = 548,
    MSG_TIME = 549,
    ONSEND_RT_REPLY = 550,
    URI_HOST_EXTRA_CHARS = 551,
    HDR_NAME_EXTRA_CHARS = 552,
    FLAGS_DECL = 553,
    AVPFLAGS_DECL = 554,
    ATTR_MARK = 555,
    SELECT_MARK = 556,
    ATTR_FROM = 557,
    ATTR_TO = 558,
    ATTR_FROMURI = 559,
    ATTR_TOURI = 560,
    ATTR_FROMUSER = 561,
    ATTR_TOUSER = 562,
    ATTR_FROMDOMAIN = 563,
    ATTR_TODOMAIN = 564,
    ATTR_GLOBAL = 565,
    ADDEQ = 566,
    SUBST = 567,
    SUBSTDEF = 568,
    SUBSTDEFS = 569,
    EQUAL = 570,
    LOG_OR = 571,
    LOG_AND = 572,
    BIN_OR = 573,
    BIN_AND = 574,
    BIN_XOR = 575,
    BIN_LSHIFT = 576,
    BIN_RSHIFT = 577,
    EQUAL_T = 578,
    DIFF = 579,
    MATCH = 580,
    INTEQ = 581,
    INTDIFF = 582,
    STREQ = 583,
    STRDIFF = 584,
    GT = 585,
    LT = 586,
    GTE = 587,
    LTE = 588,
    PLUS = 589,
    MINUS = 590,
    STAR = 591,
    SLASH = 592,
    MODULO = 593,
    NOT = 594,
    UNARY = 595,
    BIN_NOT = 596,
    DEFINED = 597,
    INTCAST = 598,
    STRCAST = 599,
    DOT = 600,
    STRLEN = 601,
    STREMPTY = 602,
    SELVAL = 603,
    NUMBER = 604,
    ID = 605,
    NUM_ID = 606,
    STRING = 607,
    IPV6ADDR = 608,
    PVAR = 609,
    AVP_OR_PVAR = 610,
    EVENT_RT_NAME = 611,
    COMMA = 612,
    SEMICOLON = 613,
    RPAREN = 614,
    LPAREN = 615,
    LBRACE = 616,
    RBRACE = 617,
    LBRACK = 618,
    RBRACK = 619,
    CR = 620,
    COLON = 621
  };
#endif

/* Value type.  */
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED

union YYSTYPE
{
#line 198 "core/cfg.y" /* yacc.c:355  */

	long intval;
	unsigned long uval;
	char* strval;
	struct expr* expr;
	struct action* action;
	struct case_stms* case_stms;
	struct net* ipnet;
	struct ip_addr* ipaddr;
	struct socket_id* sockid;
	struct name_lst* name_l;
	struct avp_spec* attr;
	struct _pv_spec* pvar;
	struct lvalue* lval;
	struct rvalue* rval;
	struct rval_expr* rv_expr;
	select_t* select;

#line 660 "core/cfg.tab.c" /* yacc.c:355  */
};

typedef union YYSTYPE YYSTYPE;
# define YYSTYPE_IS_TRIVIAL 1
# define YYSTYPE_IS_DECLARED 1
#endif


extern YYSTYPE yylval;

int yyparse (void);

#endif /* !YY_YY_CORE_CFG_TAB_H_INCLUDED  */

/* Copy the second part of user declarations.  */

#line 677 "core/cfg.tab.c" /* yacc.c:358  */

#ifdef short
# undef short
#endif

#ifdef YYTYPE_UINT8
typedef YYTYPE_UINT8 yytype_uint8;
#else
typedef unsigned char yytype_uint8;
#endif

#ifdef YYTYPE_INT8
typedef YYTYPE_INT8 yytype_int8;
#else
typedef signed char yytype_int8;
#endif

#ifdef YYTYPE_UINT16
typedef YYTYPE_UINT16 yytype_uint16;
#else
typedef unsigned short int yytype_uint16;
#endif

#ifdef YYTYPE_INT16
typedef YYTYPE_INT16 yytype_int16;
#else
typedef short int yytype_int16;
#endif

#ifndef YYSIZE_T
# ifdef __SIZE_TYPE__
#  define YYSIZE_T __SIZE_TYPE__
# elif defined size_t
#  define YYSIZE_T size_t
# elif ! defined YYSIZE_T
#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
#  define YYSIZE_T size_t
# else
#  define YYSIZE_T unsigned int
# endif
#endif

#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)

#ifndef YY_
# if defined YYENABLE_NLS && YYENABLE_NLS
#  if ENABLE_NLS
#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
#   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
#  endif
# endif
# ifndef YY_
#  define YY_(Msgid) Msgid
# endif
#endif

#ifndef YY_ATTRIBUTE
# if (defined __GNUC__                                               \
      && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__)))  \
     || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
#  define YY_ATTRIBUTE(Spec) __attribute__(Spec)
# else
#  define YY_ATTRIBUTE(Spec) /* empty */
# endif
#endif

#ifndef YY_ATTRIBUTE_PURE
# define YY_ATTRIBUTE_PURE   YY_ATTRIBUTE ((__pure__))
#endif

#ifndef YY_ATTRIBUTE_UNUSED
# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
#endif

#if !defined _Noreturn \
     && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
# if defined _MSC_VER && 1200 <= _MSC_VER
#  define _Noreturn __declspec (noreturn)
# else
#  define _Noreturn YY_ATTRIBUTE ((__noreturn__))
# endif
#endif

/* Suppress unused-variable warnings by "using" E.  */
#if ! defined lint || defined __GNUC__
# define YYUSE(E) ((void) (E))
#else
# define YYUSE(E) /* empty */
#endif

#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
/* Suppress an incorrect diagnostic about yylval being uninitialized.  */
# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
    _Pragma ("GCC diagnostic push") \
    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
    _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
    _Pragma ("GCC diagnostic pop")
#else
# define YY_INITIAL_VALUE(Value) Value
#endif
#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
# define YY_IGNORE_MAYBE_UNINITIALIZED_END
#endif
#ifndef YY_INITIAL_VALUE
# define YY_INITIAL_VALUE(Value) /* Nothing. */
#endif


#if ! defined yyoverflow || YYERROR_VERBOSE

/* The parser invokes alloca or malloc; define the necessary symbols.  */

# ifdef YYSTACK_USE_ALLOCA
#  if YYSTACK_USE_ALLOCA
#   ifdef __GNUC__
#    define YYSTACK_ALLOC __builtin_alloca
#   elif defined __BUILTIN_VA_ARG_INCR
#    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
#   elif defined _AIX
#    define YYSTACK_ALLOC __alloca
#   elif defined _MSC_VER
#    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
#    define alloca _alloca
#   else
#    define YYSTACK_ALLOC alloca
#    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
      /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
#     ifndef EXIT_SUCCESS
#      define EXIT_SUCCESS 0
#     endif
#    endif
#   endif
#  endif
# endif

# ifdef YYSTACK_ALLOC
   /* Pacify GCC's 'empty if-body' warning.  */
#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
#  ifndef YYSTACK_ALLOC_MAXIMUM
    /* The OS might guarantee only one guard page at the bottom of the stack,
       and a page size can be as small as 4096 bytes.  So we cannot safely
       invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
       to allow for a few compiler-allocated temporary stack slots.  */
#   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
#  endif
# else
#  define YYSTACK_ALLOC YYMALLOC
#  define YYSTACK_FREE YYFREE
#  ifndef YYSTACK_ALLOC_MAXIMUM
#   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
#  endif
#  if (defined __cplusplus && ! defined EXIT_SUCCESS \
       && ! ((defined YYMALLOC || defined malloc) \
             && (defined YYFREE || defined free)))
#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
#   ifndef EXIT_SUCCESS
#    define EXIT_SUCCESS 0
#   endif
#  endif
#  ifndef YYMALLOC
#   define YYMALLOC malloc
#   if ! defined malloc && ! defined EXIT_SUCCESS
void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
#   endif
#  endif
#  ifndef YYFREE
#   define YYFREE free
#   if ! defined free && ! defined EXIT_SUCCESS
void free (void *); /* INFRINGES ON USER NAME SPACE */
#   endif
#  endif
# endif
#endif /* ! defined yyoverflow || YYERROR_VERBOSE */


#if (! defined yyoverflow \
     && (! defined __cplusplus \
         || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))

/* A type that is properly aligned for any stack member.  */
union yyalloc
{
  yytype_int16 yyss_alloc;
  YYSTYPE yyvs_alloc;
};

/* The size of the maximum gap between one aligned stack and the next.  */
# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)

/* The size of an array large to enough to hold all stacks, each with
   N elements.  */
# define YYSTACK_BYTES(N) \
     ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
      + YYSTACK_GAP_MAXIMUM)

# define YYCOPY_NEEDED 1

/* Relocate STACK from its old location to the new one.  The
   local variables YYSIZE and YYSTACKSIZE give the old and new number of
   elements in the stack, and YYPTR gives the new location of the
   stack.  Advance YYPTR to a properly aligned location for the next
   stack.  */
# define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
    do                                                                  \
      {                                                                 \
        YYSIZE_T yynewbytes;                                            \
        YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
        Stack = &yyptr->Stack_alloc;                                    \
        yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
        yyptr += yynewbytes / sizeof (*yyptr);                          \
      }                                                                 \
    while (0)

#endif

#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
/* Copy COUNT objects from SRC to DST.  The source and destination do
   not overlap.  */
# ifndef YYCOPY
#  if defined __GNUC__ && 1 < __GNUC__
#   define YYCOPY(Dst, Src, Count) \
      __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
#  else
#   define YYCOPY(Dst, Src, Count)              \
      do                                        \
        {                                       \
          YYSIZE_T yyi;                         \
          for (yyi = 0; yyi < (Count); yyi++)   \
            (Dst)[yyi] = (Src)[yyi];            \
        }                                       \
      while (0)
#  endif
# endif
#endif /* !YYCOPY_NEEDED */

/* YYFINAL -- State number of the termination state.  */
#define YYFINAL  494
/* YYLAST -- Last index in YYTABLE.  */
#define YYLAST   12418

/* YYNTOKENS -- Number of terminals.  */
#define YYNTOKENS  367
/* YYNNTS -- Number of nonterminals.  */
#define YYNNTS  104
/* YYNRULES -- Number of rules.  */
#define YYNRULES  940
/* YYNSTATES -- Number of states.  */
#define YYNSTATES  1769

/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
   by yylex, with out-of-bounds checking.  */
#define YYUNDEFTOK  2
#define YYMAXUTOK   621

#define YYTRANSLATE(YYX)                                                \
  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)

/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
   as returned by yylex, without out-of-bounds checking.  */
static const yytype_uint16 yytranslate[] =
{
       0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
      75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
      85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
      95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
     105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
     115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
     125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
     135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
     145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
     155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
     165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
     175,   176,   177,   178,   179,   180,   181,   182,   183,   184,
     185,   186,   187,   188,   189,   190,   191,   192,   193,   194,
     195,   196,   197,   198,   199,   200,   201,   202,   203,   204,
     205,   206,   207,   208,   209,   210,   211,   212,   213,   214,
     215,   216,   217,   218,   219,   220,   221,   222,   223,   224,
     225,   226,   227,   228,   229,   230,   231,   232,   233,   234,
     235,   236,   237,   238,   239,   240,   241,   242,   243,   244,
     245,   246,   247,   248,   249,   250,   251,   252,   253,   254,
     255,   256,   257,   258,   259,   260,   261,   262,   263,   264,
     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
     305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
     315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
     325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
     335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
     345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
     355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
     365,   366
};

#if YYDEBUG
  /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
static const yytype_uint16 yyrline[] =
{
       0,   644,   644,   647,   648,   649,   652,   653,   654,   655,
     656,   657,   657,   658,   658,   659,   660,   660,   661,   661,
     662,   662,   663,   664,   667,   683,   691,   705,   706,   712,
     713,   717,   718,   719,   720,   721,   724,   725,   726,   727,
     728,   729,   730,   733,   734,   737,   738,   739,   740,   741,
     745,   746,   747,   748,   749,   753,   754,   757,   758,   761,
     762,   764,   765,   768,   771,   777,   778,   782,   783,   786,
     787,   790,   796,   797,   798,   799,   800,   801,   802,   803,
     804,   807,   808,   814,   815,   816,   817,   818,   819,   820,
     821,   822,   823,   824,   825,   826,   827,   830,   831,   834,
     835,   836,   837,   838,   839,   840,   841,   842,   843,   844,
     845,   846,   847,   848,   849,   850,   851,   853,   854,   855,
     856,   857,   858,   859,   860,   861,   862,   863,   864,   865,
     866,   867,   868,   869,   870,   871,   872,   873,   874,   875,
     876,   877,   878,   879,   880,   881,   882,   883,   884,   885,
     886,   887,   888,   889,   890,   891,   892,   900,   901,   902,
     903,   904,   905,   908,   909,   912,   913,   916,   917,   918,
     919,   922,   923,   926,   927,   930,   931,   934,   935,   936,
     937,   938,   939,   940,   941,   942,   943,   944,   945,   946,
     947,   948,   949,   950,   951,   952,   953,   954,   955,   956,
     957,   958,   959,   960,   961,   962,   963,   964,   965,   966,
     967,   968,   969,   970,   971,   972,   973,   974,   975,   976,
     977,   978,   979,   980,   981,   984,   985,   992,   999,  1000,
    1001,  1002,  1003,  1004,  1005,  1006,  1007,  1008,  1009,  1010,
    1011,  1012,  1013,  1014,  1021,  1022,  1029,  1030,  1037,  1038,
    1045,  1046,  1053,  1054,  1061,  1062,  1069,  1070,  1080,  1081,
    1095,  1109,  1110,  1117,  1118,  1125,  1126,  1133,  1134,  1143,
    1144,  1153,  1154,  1161,  1162,  1169,  1170,  1177,  1178,  1185,
    1186,  1193,  1194,  1201,  1202,  1209,  1210,  1217,  1218,  1225,
    1226,  1233,  1234,  1241,  1242,  1249,  1250,  1257,  1258,  1265,
    1266,  1273,  1274,  1281,  1282,  1289,  1290,  1297,  1299,  1306,
    1307,  1318,  1319,  1326,  1327,  1334,  1335,  1342,  1343,  1350,
    1351,  1358,  1365,  1372,  1379,  1386,  1393,  1394,  1401,  1402,
    1409,  1410,  1417,  1418,  1425,  1426,  1433,  1434,  1441,  1442,
    1449,  1450,  1457,  1458,  1465,  1466,  1467,  1468,  1471,  1472,
    1475,  1476,  1477,  1478,  1479,  1480,  1481,  1482,  1494,  1506,
    1519,  1532,  1545,  1558,  1560,  1571,  1572,  1573,  1574,  1580,
    1581,  1591,  1592,  1593,  1594,  1595,  1596,  1603,  1604,  1611,
    1612,  1613,  1614,  1615,  1616,  1617,  1618,  1619,  1620,  1621,
    1622,  1623,  1624,  1625,  1626,  1627,  1628,  1635,  1636,  1643,
    1644,  1651,  1658,  1659,  1660,  1687,  1688,  1689,  1690,  1691,
    1692,  1693,  1694,  1695,  1696,  1697,  1698,  1699,  1700,  1701,
    1702,  1703,  1704,  1705,  1706,  1707,  1708,  1709,  1710,  1711,
    1712,  1713,  1714,  1715,  1716,  1725,  1726,  1735,  1736,  1745,
    1746,  1755,  1756,  1765,  1766,  1767,  1768,  1769,  1770,  1771,
    1772,  1773,  1774,  1775,  1776,  1777,  1778,  1779,  1780,  1781,
    1782,  1783,  1784,  1785,  1786,  1788,  1789,  1790,  1791,  1793,
    1795,  1796,  1797,  1800,  1801,  1804,  1805,  1806,  1809,  1810,
    1813,  1814,  1815,  1823,  1828,  1833,  1838,  1843,  1846,  1851,
    1859,  1865,  1866,  1872,  1873,  1883,  1884,  1894,  1895,  1904,
    1913,  1914,  1923,  1932,  1941,  1942,  1948,  1949,  1955,  1959,
    1960,  1963,  1992,  2007,  2008,  2012,  2023,  2024,  2028,  2029,
    2033,  2040,  2056,  2057,  2060,  2063,  2070,  2086,  2090,  2091,
    2096,  2096,  2103,  2104,  2106,  2105,  2128,  2133,  2136,  2143,
    2159,  2162,  2165,  2172,  2188,  2191,  2194,  2211,  2214,  2215,
    2216,  2217,  2218,  2219,  2241,  2242,  2243,  2244,  2247,  2248,
    2249,  2250,  2253,  2254,  2260,  2261,  2262,  2263,  2264,  2265,
    2266,  2269,  2270,  2271,  2272,  2279,  2280,  2281,  2288,  2289,
    2290,  2294,  2295,  2296,  2297,  2298,  2303,  2304,  2307,  2308,
    2309,  2315,  2317,  2319,  2320,  2322,  2324,  2326,  2328,  2330,
    2331,  2333,  2334,  2335,  2336,  2338,  2340,  2342,  2344,  2346,
    2348,  2349,  2385,  2387,  2389,  2391,  2394,  2396,  2398,  2400,
    2404,  2405,  2416,  2417,  2421,  2422,  2437,  2452,  2453,  2456,
    2457,  2458,  2470,  2471,  2486,  2501,  2503,  2510,  2552,  2553,
    2556,  2557,  2558,  2561,  2562,  2563,  2564,  2565,  2566,  2567,
    2568,  2571,  2579,  2589,  2606,  2613,  2620,  2627,  2634,  2639,
    2644,  2645,  2646,  2647,  2648,  2651,  2660,  2667,  2692,  2708,
    2709,  2714,  2733,  2742,  2754,  2769,  2770,  2773,  2773,  2783,
    2784,  2785,  2786,  2787,  2788,  2789,  2790,  2791,  2794,  2797,
    2798,  2801,  2808,  2811,  2818,  2824,  2825,  2834,  2835,  2836,
    2839,  2840,  2852,  2876,  2887,  2918,  2922,  2932,  2946,  2958,
    2959,  2961,  2962,  2963,  2977,  2978,  2979,  2980,  2981,  2982,
    2983,  2987,  2988,  2989,  3002,  3008,  3009,  3010,  3011,  3012,
    3013,  3014,  3015,  3016,  3017,  3018,  3019,  3020,  3021,  3022,
    3040,  3041,  3042,  3043,  3044,  3045,  3046,  3054,  3055,  3056,
    3057,  3058,  3059,  3060,  3061,  3062,  3063,  3064,  3066,  3068,
    3069,  3070,  3071,  3072,  3073,  3076,  3094,  3095,  3096,  3099,
    3100,  3101,  3102,  3103,  3104,  3105,  3106,  3107,  3108,  3109,
    3110,  3111,  3112,  3113,  3114,  3115,  3116,  3117,  3118,  3119,
    3120,  3121,  3122,  3123,  3124,  3125,  3126,  3127,  3128,  3129,
    3130,  3131,  3132,  3133,  3141,  3149,  3157,  3165,  3173,  3181,
    3189,  3197,  3205,  3206,  3208,  3216,  3224,  3232,  3241,  3250,
    3259,  3267,  3276,  3284,  3285,  3287,  3290,  3291,  3292,  3293,
    3300,  3307,  3308,  3314,  3321,  3322,  3328,  3335,  3336,  3342,
    3345,  3348,  3349,  3350,  3353,  3354,  3355,  3364,  3373,  3374,
    3375,  3376,  3377,  3378,  3379,  3380,  3381,  3382,  3383,  3384,
    3385,  3386,  3387,  3388,  3389,  3390,  3394,  3398,  3399,  3400,
    3401,  3402,  3403,  3404,  3405,  3406,  3407,  3408,  3409,  3410,
    3411,  3412,  3413,  3414,  3415,  3416,  3417,  3418,  3419,  3420,
    3421,  3422,  3423,  3424,  3425,  3433,  3441,  3449,  3450,  3452,
    3454,  3465,  3466,  3467,  3483,  3484,  3485,  3489,  3492,  3493,
    3496,  3499,  3502,  3505,  3508,  3511,  3514,  3517,  3520,  3523,
    3524,  3525,  3528,  3529,  3530,  3530,  3563,  3565,  3567,  3568,
    3571,  3588,  3592,  3596,  3600,  3605,  3609,  3614,  3618,  3622,
    3626
};
#endif

#if YYDEBUG || YYERROR_VERBOSE || 0
/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
   First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
static const char *const yytname[] =
{
  "$end", "error", "$undefined", "FORWARD", "FORWARD_TCP", "FORWARD_TLS",
  "FORWARD_SCTP", "FORWARD_UDP", "EXIT", "DROP", "RETURN", "BREAK",
  "LOG_TOK", "ERROR", "ROUTE", "ROUTE_REQUEST", "ROUTE_FAILURE",
  "ROUTE_ONREPLY", "ROUTE_REPLY", "ROUTE_BRANCH", "ROUTE_SEND",
  "ROUTE_EVENT", "EXEC", "SET_HOST", "SET_HOSTPORT", "SET_HOSTPORTTRANS",
  "PREFIX", "STRIP", "STRIP_TAIL", "SET_USERPHONE", "APPEND_BRANCH",
  "REMOVE_BRANCH", "CLEAR_BRANCHES", "SET_USER", "SET_USERPASS",
  "SET_PORT", "SET_URI", "REVERT_URI", "FORCE_RPORT", "ADD_LOCAL_RPORT",
  "LOCAL_RPORT", "FORCE_TCP_ALIAS", "UDP_MTU", "UDP_MTU_TRY_PROTO",
  "UDP4_RAW", "UDP4_RAW_MTU", "UDP4_RAW_TTL", "IF", "ELSE",
  "SET_ADV_ADDRESS", "SET_ADV_PORT", "FORCE_SEND_SOCKET",
  "SET_FWD_NO_CONNECT", "SET_RPL_NO_CONNECT", "SET_FWD_CLOSE",
  "SET_RPL_CLOSE", "SWITCH", "CASE", "DEFAULT", "WHILE", "CFG_SELECT",
  "CFG_RESET", "URIHOST", "URIPORT", "MAX_LEN", "SETFLAG", "RESETFLAG",
  "ISFLAGSET", "SETAVPFLAG", "RESETAVPFLAG", "ISAVPFLAGSET", "METHOD",
  "URI", "FROM_URI", "TO_URI", "SRCIP", "SRCPORT", "DSTIP", "DSTPORT",
  "TOIP", "TOPORT", "SNDIP", "SNDPORT", "SNDPROTO", "SNDAF", "PROTO", "AF",
  "MYSELF", "MSGLEN", "UDP", "TCP", "TLS", "SCTP", "WS", "WSS", "DEBUG_V",
  "FORK", "FORK_DELAY", "MODINIT_DELAY", "LOGSTDERROR", "LOGFACILITY",
  "LOGNAME", "LOGCOLOR", "LOGPREFIX", "LOGPREFIXMODE", "LOGENGINETYPE",
  "LOGENGINEDATA", "XAVPVIAPARAMS", "XAVPVIAFIELDS", "LISTEN", "ADVERTISE",
  "STRNAME", "ALIAS", "SR_AUTO_ALIASES", "DNS", "REV_DNS", "DNS_TRY_IPV6",
  "DNS_TRY_NAPTR", "DNS_SRV_LB", "DNS_UDP_PREF", "DNS_TCP_PREF",
  "DNS_TLS_PREF", "DNS_SCTP_PREF", "DNS_RETR_TIME", "DNS_SLOW_QUERY_MS",
  "DNS_RETR_NO", "DNS_SERVERS_NO", "DNS_USE_SEARCH", "DNS_SEARCH_FMATCH",
  "DNS_NAPTR_IGNORE_RFC", "DNS_CACHE_INIT", "DNS_USE_CACHE",
  "DNS_USE_FAILOVER", "DNS_CACHE_FLAGS", "DNS_CACHE_NEG_TTL",
  "DNS_CACHE_MIN_TTL", "DNS_CACHE_MAX_TTL", "DNS_CACHE_MEM",
  "DNS_CACHE_GC_INT", "DNS_CACHE_DEL_NONEXP", "DNS_CACHE_REC_PREF",
  "AUTO_BIND_IPV6", "BIND_IPV6_LINK_LOCAL", "IPV6_HEX_STYLE",
  "DST_BLST_INIT", "USE_DST_BLST", "DST_BLST_MEM", "DST_BLST_TTL",
  "DST_BLST_GC_INT", "DST_BLST_UDP_IMASK", "DST_BLST_TCP_IMASK",
  "DST_BLST_TLS_IMASK", "DST_BLST_SCTP_IMASK", "IP_FREE_BIND", "PORT",
  "STAT", "STATS_NAMESEP", "CHILDREN", "SOCKET_WORKERS", "ASYNC_WORKERS",
  "ASYNC_USLEEP", "ASYNC_NONBLOCK", "ASYNC_WORKERS_GROUP", "CHECK_VIA",
  "PHONE2TEL", "MEMLOG", "MEMDBG", "MEMSUM", "MEMSAFETY", "MEMJOIN",
  "MEMSTATUSMODE", "SIP_PARSER_LOG", "SIP_PARSER_MODE", "CORELOG",
  "SIP_WARNING", "SERVER_SIGNATURE", "SERVER_HEADER", "USER_AGENT_HEADER",
  "REPLY_TO_VIA", "LOADMODULE", "LOADMODULEX", "LOADPATH", "MODPARAM",
  "MODPARAMX", "CFGENGINE", "MAXBUFFER", "SQL_BUFFER_SIZE", "USER",
  "GROUP", "CHROOT", "WDIR", "RUNDIR", "MHOMED", "DISABLE_TCP",
  "TCP_ACCEPT_ALIASES", "TCP_ACCEPT_UNIQUE", "TCP_CONNECTION_MATCH",
  "TCP_CHILDREN", "TCP_CONNECT_TIMEOUT", "TCP_SEND_TIMEOUT",
  "TCP_CON_LIFETIME", "TCP_POLL_METHOD", "TCP_MAX_CONNECTIONS",
  "TLS_MAX_CONNECTIONS", "TCP_NO_CONNECT", "TCP_SOURCE_IPV4",
  "TCP_SOURCE_IPV6", "TCP_OPT_FD_CACHE", "TCP_OPT_BUF_WRITE",
  "TCP_OPT_CONN_WQ_MAX", "TCP_OPT_WQ_MAX", "TCP_OPT_RD_BUF",
  "TCP_OPT_WQ_BLK", "TCP_OPT_DEFER_ACCEPT", "TCP_OPT_DELAYED_ACK",
  "TCP_OPT_SYNCNT", "TCP_OPT_LINGER2", "TCP_OPT_KEEPALIVE",
  "TCP_OPT_KEEPIDLE", "TCP_OPT_KEEPINTVL", "TCP_OPT_KEEPCNT",
  "TCP_OPT_CRLF_PING", "TCP_OPT_ACCEPT_NO_CL", "TCP_OPT_ACCEPT_HEP3",
  "TCP_OPT_ACCEPT_HAPROXY", "TCP_CLONE_RCVBUF", "TCP_REUSE_PORT",
  "DISABLE_TLS", "ENABLE_TLS", "TLSLOG", "TLS_PORT_NO", "TLS_METHOD",
  "TLS_HANDSHAKE_TIMEOUT", "TLS_SEND_TIMEOUT", "SSLv23", "SSLv2", "SSLv3",
  "TLSv1", "TLS_VERIFY", "TLS_REQUIRE_CERTIFICATE", "TLS_CERTIFICATE",
  "TLS_PRIVATE_KEY", "TLS_CA_LIST", "DISABLE_SCTP", "ENABLE_SCTP",
  "SCTP_CHILDREN", "ADVERTISED_ADDRESS", "ADVERTISED_PORT", "DISABLE_CORE",
  "OPEN_FD_LIMIT", "SHM_MEM_SZ", "SHM_FORCE_ALLOC", "MLOCK_PAGES",
  "REAL_TIME", "RT_PRIO", "RT_POLICY", "RT_TIMER1_PRIO",
  "RT_TIMER1_POLICY", "RT_TIMER2_PRIO", "RT_TIMER2_POLICY",
  "MCAST_LOOPBACK", "MCAST_TTL", "MCAST", "TOS", "PMTU_DISCOVERY",
  "KILL_TIMEOUT", "MAX_WLOOPS", "PVBUFSIZE", "PVBUFSLOTS", "PVCACHELIMIT",
  "PVCACHEACTION", "HTTP_REPLY_PARSE", "VERSION_TABLE_CFG",
  "VERBOSE_STARTUP", "ROUTE_LOCKS_SIZE", "WAIT_WORKER1_MODE",
  "WAIT_WORKER1_TIME", "WAIT_WORKER1_USLEEP", "CFG_DESCRIPTION",
  "SERVER_ID", "KEMI", "ONSEND_ROUTE_CALLBACK", "REPLY_ROUTE_CALLBACK",
  "EVENT_ROUTE_CALLBACK", "RECEIVED_ROUTE_CALLBACK", "RECEIVED_ROUTE_MODE",
  "PRE_ROUTING_CALLBACK", "MAX_RECURSIVE_LEVEL", "MAX_BRANCHES_PARAM",
  "LATENCY_CFG_LOG", "LATENCY_LOG", "LATENCY_LIMIT_DB",
  "LATENCY_LIMIT_ACTION", "LATENCY_LIMIT_CFG", "MSG_TIME",
  "ONSEND_RT_REPLY", "URI_HOST_EXTRA_CHARS", "HDR_NAME_EXTRA_CHARS",
  "FLAGS_DECL", "AVPFLAGS_DECL", "ATTR_MARK", "SELECT_MARK", "ATTR_FROM",
  "ATTR_TO", "ATTR_FROMURI", "ATTR_TOURI", "ATTR_FROMUSER", "ATTR_TOUSER",
  "ATTR_FROMDOMAIN", "ATTR_TODOMAIN", "ATTR_GLOBAL", "ADDEQ", "SUBST",
  "SUBSTDEF", "SUBSTDEFS", "EQUAL", "LOG_OR", "LOG_AND", "BIN_OR",
  "BIN_AND", "BIN_XOR", "BIN_LSHIFT", "BIN_RSHIFT", "EQUAL_T", "DIFF",
  "MATCH", "INTEQ", "INTDIFF", "STREQ", "STRDIFF", "GT", "LT", "GTE",
  "LTE", "PLUS", "MINUS", "STAR", "SLASH", "MODULO", "NOT", "UNARY",
  "BIN_NOT", "DEFINED", "INTCAST", "STRCAST", "DOT", "STRLEN", "STREMPTY",
  "SELVAL", "NUMBER", "ID", "NUM_ID", "STRING", "IPV6ADDR", "PVAR",
  "AVP_OR_PVAR", "EVENT_RT_NAME", "COMMA", "SEMICOLON", "RPAREN", "LPAREN",
  "LBRACE", "RBRACE", "LBRACK", "RBRACK", "CR", "COLON", "$accept", "cfg",
  "statements", "statement", "$@1", "$@2", "$@3", "$@4", "$@5",
  "listen_id", "listen_id_lst", "listen_id2", "proto", "eqproto", "port",
  "phostport", "listen_phostport", "id_lst", "intno", "flags_decl",
  "flag_list", "flag_spec", "flag_name", "avpflags_decl", "avpflag_list",
  "avpflag_spec", "assign_stm", "cfg_var_id", "cfg_var_idn", "cfg_var",
  "module_stm", "ip", "ipv4", "ipv6addr", "ipv6", "route_name",
  "route_main", "route_stm", "failure_route_main", "failure_route_stm",
  "route_reply_main", "onreply_route_stm", "$@6", "$@7",
  "branch_route_main", "branch_route_stm", "send_route_main",
  "send_route_stm", "event_route_main", "event_route_stm",
  "preprocess_stm", "equalop", "cmpop", "strop", "rve_equalop",
  "rve_cmpop", "uri_type", "eint_op_onsend", "eint_op", "eip_op_onsend",
  "eip_op", "exp_elem", "ipnet", "host", "host_if_id", "host_or_if",
  "fcmd", "stm", "actions", "action", "if_cmd", "ct_rval", "single_case",
  "case_stms", "switch_cmd", "while_cmd", "select_param", "select_params",
  "select_id", "$@8", "attr_class_spec", "attr_name_spec", "attr_spec",
  "attr_mark", "attr_id", "attr_id_num_idx", "attr_id_no_idx",
  "attr_id_ass", "attr_id_any", "attr_id_any_str", "pvar", "avp_pvar",
  "assign_op", "lval", "rval", "rve_un_op", "rval_expr", "assign_action",
  "avpflag_oper", "cmd", "$@9", "func_params", "func_param", "ret_cmd", YY_NULLPTR
};
#endif

# ifdef YYPRINT
/* YYTOKNUM[NUM] -- (External) token number corresponding to the
   (internal) symbol number NUM (which must be that of a token).  */
static const yytype_uint16 yytoknum[] =
{
       0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
     305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
     315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
     325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
     335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
     345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
     355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
     365,   366,   367,   368,   369,   370,   371,   372,   373,   374,
     375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
     385,   386,   387,   388,   389,   390,   391,   392,   393,   394,
     395,   396,   397,   398,   399,   400,   401,   402,   403,   404,
     405,   406,   407,   408,   409,   410,   411,   412,   413,   414,
     415,   416,   417,   418,   419,   420,   421,   422,   423,   424,
     425,   426,   427,   428,   429,   430,   431,   432,   433,   434,
     435,   436,   437,   438,   439,   440,   441,   442,   443,   444,
     445,   446,   447,   448,   449,   450,   451,   452,   453,   454,
     455,   456,   457,   458,   459,   460,   461,   462,   463,   464,
     465,   466,   467,   468,   469,   470,   471,   472,   473,   474,
     475,   476,   477,   478,   479,   480,   481,   482,   483,   484,
     485,   486,   487,   488,   489,   490,   491,   492,   493,   494,
     495,   496,   497,   498,   499,   500,   501,   502,   503,   504,
     505,   506,   507,   508,   509,   510,   511,   512,   513,   514,
     515,   516,   517,   518,   519,   520,   521,   522,   523,   524,
     525,   526,   527,   528,   529,   530,   531,   532,   533,   534,
     535,   536,   537,   538,   539,   540,   541,   542,   543,   544,
     545,   546,   547,   548,   549,   550,   551,   552,   553,   554,
     555,   556,   557,   558,   559,   560,   561,   562,   563,   564,
     565,   566,   567,   568,   569,   570,   571,   572,   573,   574,
     575,   576,   577,   578,   579,   580,   581,   582,   583,   584,
     585,   586,   587,   588,   589,   590,   591,   592,   593,   594,
     595,   596,   597,   598,   599,   600,   601,   602,   603,   604,
     605,   606,   607,   608,   609,   610,   611,   612,   613,   614,
     615,   616,   617,   618,   619,   620,   621
};
# endif

#define YYPACT_NINF -1218

#define yypact_value_is_default(Yystate) \
  (!!((Yystate) == (-1218)))

#define YYTABLE_NINF -925

#define yytable_value_is_error(Yytable_value) \
  0

  /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
     STATE-NUM.  */
static const yytype_int16 yypact[] =
{
    2305,  -287,    19,    15,  -249,  -245,  -232,  -221,  -195,  -190,
    -187, -1218,  -182,  -172,  -163,  -135,  -115,  -110,  -103,   -95,
     -90,   -77,   -71,   -70,   -65,   -50,   -21,   -16,    -5,     4,
      20,    79,   171,   581,   653,   704,   736,   754,   818,   819,
     873,   878,   884,   896,   908,   916,   936,   937,   942,   951,
     953,   954,   955,   956,   957,   963,   972,   973,   988,   994,
     999,  1000,  1007,  1009,  1012,  1016,  1017,  1023,    23,    24,
      28,    35,   101,   340,   374,   421,   424,   430,   480,   546,
     558,   566,   571,   574,   596,   597,   600,   601,   606,   608,
     635,   657,   661,   123,   200,   154,    60,    70,   201,   670,
     672,   673,   676,   677,   682,   699,   700,   727,   728,   762,
     796,   801,   811,   840,   856,   867,   868,   870,   871,   874,
     877,   886,   887,  1024,  1025,  1026,  1028,   891,   895,   917,
     930,   940,   944,   948,   967,   976,   989,   992,   997,  1005,
    1006,  1010,  1011,  1018,  1032,  1038,  1056,  1065,  1066,  1089,
    1090,  1092,  1101,  1110,  1125,  1128,  1130,  1132,  1134,  1135,
    1137,  1138,  1139,  1140,  1142,  1143,  1144,  1146,  1163,  1164,
    1208,  1287,  1288,  1289,  1030,  1290,  1334,  1335,  1336,  1339,
    1353,  1354,  1355,  1356,  1357,  1358,  1360,  1361,  1362,   -87,
    1363,  1364,  1369,  1370,  1371,  1382,  1384,  1385,  1387,  1389,
    1390,  1401,   121,   216,   206,   245,   248, -1218, -1218, -1218,
     329,  1368, -1218,   214,   271,   311,   314,   333, -1218, -1218,
   -1218,  -268, -1218, -1218,   136, -1218, -1218, -1218, -1218,  -146,
   -1218,   272,   315,   345,   889,   331,   350,   352,   341,   355,
     363,   394,   534,   158,   251,   564,   253,   610,   255,   258,
     262,   265,    48,    85,   626,   628,   691, -1218,   454, -1218,
     647, -1218,   683, -1218,  -260, -1218,  -260, -1218,  -260, -1218,
    -260, -1218,   684, -1218,   690, -1218,   698, -1218,   722, -1218,
     725, -1218,   739, -1218,   740, -1218,   747, -1218,   763, -1218,
     764, -1218,   765, -1218,   778, -1218,   782, -1218,   786, -1218,
     815, -1218,   911, -1218,   927, -1218,   943, -1218,  1372, -1218,
    1374, -1218,   793, -1218,  1375, -1218,  1376, -1218,  1378, -1218,
    1379, -1218,  1380, -1218,  1381, -1218,  1383, -1218,  1386, -1218,
    1388,   344,   706,   266,   707,   708,   710,   712,   713,   268,
     714,   715,   348,   361,   392,   395,   457,   459,   463,   467,
     488,   716,   717,   270,   274,   718, -1218, -1218, -1218, -1218,
   -1218,   276, -1218, -1218,   794, -1218,   888, -1218,   278, -1218,
     723,   724,   217,   223,   226,   229,   236,   730,   731,   732,
     733,   734,   745,   569,   611,   612,   239,   746,   749,   750,
     751,    52,   752,   755, -1218,  1391, -1218,  1407, -1218,  1408,
   -1218,  1409,   756,   757,   759,   760,   761,   766,   768,   769,
     770,   771,   772,   773,   774,   775,   776,   779,   780,   781,
      91,   783,   787,   795,   798,   279,   280,   281,   799,   800,
     803,   104,   804,   808,   809,   810,   812,   813,   814,   816,
     817,   820,   821,   823,   824,   825,   826,   242,   210, -1218,
    1410,   827,   828,   830,   831,   832,   835,   838,   282,   841,
     842,   845,   846,   847,   848,  1081,   614,  1411,  1412,   618,
     681,   849,   851,   854,   858,   863,   283,   284, -1218, -1218,
   -1218, -1218,   876,   784, -1218, -1218, -1218,  1326, -1218, -1218,
   -1218, -1218, -1218, -1218, -1218,  -287, -1218,    22,    26,  1359,
   -1218,    51,  1377, -1218,    63,  1419, -1218,    66,  1421, -1218,
      18,   991, -1218,   -28,  1435, -1218, -1218, -1218, -1218,  1367,
   -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218,
   -1218, -1218, -1218, -1218,  1436, -1218, -1218, -1218, -1218, -1218,
   -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218,
   -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218,
   -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218,
    1394, -1218, -1218, -1218, -1218,   945,   807, -1218,  1351,  1404,
    1338,   122, -1218, -1218, -1218, -1218, -1218,  -209, -1218, -1218,
   -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218,
   -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218,
   -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218,
   -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218,
   -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218,
   -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218,
   -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218,
   -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218,
   -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218,
   -1218, -1218, -1218, -1218, -1218,  1429,  1431, -1218, -1218, -1218,
   -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218,
   -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218,
   -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218,
   -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218,
   -1218, -1218, -1218, -1218, -1218, -1218,  1394, -1218, -1218, -1218,
   -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218,
   -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218,
   -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218,
   -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218,
   -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218,
   -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218,
   -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218,
   -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218,
   -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218,
   -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218,
   -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218,
   -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218,
   -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218,
   -1218, -1218, -1218, -1218, -1218, -1218,  1482,  1483,  1487,  1488,
    1497, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218,
   -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218,
   -1218, -1218, -1218,  -194,  1476,  -194, -1218,  -146, -1218, 12060,
   -1218,  -146, 12060, -1218,  -146, 12060, -1218,  -146, 12060, -1218,
    1470, -1218, -1218, -1218,  1512,  1464, 12060,    58, -1218,  1480,
    1473,  1472,  1486,   335,  1343, -1218,   945,  1500,   319,   323,
    1502,  1503,   285,   287,   288,   289,   290, -1218, -1218, -1218,
    1492,    72,    80,    84,    86,    87, 10737, 11096, 11182, -1218,
      89,    90,    92,  1498,   102,   105,   116,   117,   128,   130,
     133,   134,  1507,   140,   143,   150,   160,  1508,  1513,  1514,
    1522,  1535, 11268,   166,   177,   181,  1536,  1537,  1538,  1539,
    6267, 11268,   182,   185,   186,   187,   188, -1218, -1218, -1218,
   -1218,   189, -1218, -1218, -1218,   103,  3450, -1218, -1218, -1218,
   -1218,  1405, -1218, -1218, -1218, -1218, -1218,  1525,  1542,   191,
   -1218,  1543,  1546,  3520,  1556,  3601,  1558,  3880,  1560,   246,
    1527,  3961, -1218,  1564,  1581,   945, -1218, -1218, -1218, -1218,
   -1218, -1218,  1562,   -48, -1218, -1218, -1218, -1218, -1218, -1218,
    1580,  1585, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218,
   -1218, -1218,  1577, -1218,    54, -1218,    39, -1218,   129, -1218,
     146, -1218,   152,   918, -1218, -1218, -1218, -1218, -1218, -1218,
   -1218, -1218, -1218, -1218, -1218,   642, -1218,   642, -1218,   982,
   -1218, -1218,  1436, -1218, -1218,  6355,  6443,  6804,  1583,  1584,
    1592, -1218,  5369, 11851, -1218,   925, -1218,   906, -1218,   961,
   -1218, -1218, -1218,  1405, -1218, -1218, -1218, -1218, -1218, -1218,
   -1218,  6892,  3865,  5730,  3865,  5818,  3865, -1218,   247, -1218,
     295, -1218,  6980,  1613, -1218,   296, -1218,   297, -1218,   299,
   -1218,   300, -1218,   864, -1218,   865, -1218,  1607, -1218,   215,
    1608, -1218,   301, -1218,   304, -1218,   305, -1218,   306,  1609,
    1610,  1611,     6,   931,  7341, 11627, -1218,   180, -1218,   879,
   -1218,     8,  1612,  1621,  1631,  1633, -1218,  2054, 11627, -1218,
     307, -1218,   313, -1218,   -57, -1218,   441, -1218,   575, -1218,
    1634, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218,
   -1218, -1218, -1218, -1218, -1218, -1218,  1650, -1218,  1373, -1218,
   11268, -1218, -1218,   225, -1218,  1635, -1218,  1637, -1218,  1646,
   -1218,  1647, -1218,  1441,  1734,   -28, -1218, 12060,  1664, -1218,
    -289,  1662,  1702,  -113,  -139, 12060,  1691,  -164, -1218,  -102,
   -1218,   585,   563,  1693,   689,   695,   701,   978,  1694,   711,
     719,   797,  1074,  1695,   924,   977,   987,  1087,  1696,   993,
    1013,  1039,  1103, -1218, -1218, -1218, -1218, -1218, -1218, -1218,
    7429,  5181,  5275, -1218,  1318,  1729, -1218, -1218, -1218, -1218,
   -1218, -1218,  7517,  7878,  7966,  1721, -1218,  1766,  1767,  1768,
    1769,  2309,  1727,  1725,  4031, -1218,  8054, -1218, -1218, -1218,
   -1218, -1218,  8415,  8503, -1218,  2653,  1726, -1218, -1218,  8591,
    8952,  9040,  9128, 11268, 11268, 11268, -1218, -1218, -1218, -1218,
   -1218, -1218, -1218, -1218, -1218, -1218, -1218,  9489,  9577,  9665,
   10026, 10114, 10202, 10563, -1218, -1218,  1732,  1731,  1733,  1737,
    1736,  1743,    83,  2639,  1744,  1745,  1746,  1748,  1749,  1750,
    1752,  1753,  1754,  1755,  1756,  1757,  1758, -1218,  1759, -1218,
    1760, -1218,  1761,  1762,  1763,  1764,  1765,  1790,  1791,  1792,
   -1218, -1218, -1218,  1793,  1794, -1218,  1795,  1796, 12060,  2077,
   -1218,  1797,  1798,  1799,  1800,  1802,  1806,  1807,  1803, -1218,
   -1218, -1218, -1218,    11, -1218,  1804,  1809,  1815,  1816,  1818,
    1819,  1820,  1822,  1823,  1824, 11268,  1834,  1821,  3865,  1043,
   -1218,  1405, -1218,  1829, -1218, 12060, 12060, 12060, 12060,  1835,
    1836,  1874,  4101,  1845, -1218, -1218,  2080,  1833,  1860,  1861,
    1862,  1863,  4240, -1218,   -37, -1218,  1844, -1218,  1846, -1218,
     184,   222,  1875, -1218, -1218,   110, -1218,  1876, -1218,  1877,
   -1218,  1878, -1218, -1218,   686, -1218,  1879, -1218,  1882, -1218,
    1883, -1218, -1218,   696, -1218,  1884, -1218,  1887, -1218,  1891,
   -1218, -1218,   726, -1218,  1893, -1218,  1894, -1218,  1895, -1218,
   -1218,  1810,  1711, -1218, -1218, -1218, -1218, -1218, -1218, -1218,
   -1218, -1218,  1711, -1218, -1218,  1711, -1218, -1218, -1218,  1831,
   -1218,  1900,  1864,  2796,  1870,  2866,  1888,  3435, -1218, -1218,
   -1218, -1218, -1218, -1218,  1880,  1711, -1218,  1711, -1218,   881,
   -1218,  1950,  1394,  1740,  1911, -1218,  -203,  1711,  -170, -1218,
    3887, -1218,  4014, -1218,  2816, -1218,  1701,  2884,  3022,  2004,
   -1218,   557, -1218,   557, -1218, -1218, -1218, -1218, -1218, -1218,
   -1218,  1711, -1218,   881, -1218,  1897, -1218, -1218,  1899, -1218,
   -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218,
   -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218,
   -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218,  4461,
   11781, -1218, -1218, -1218, -1218, -1218,   339,   945, -1218,  1890,
    5906,  1889, -1218, -1218,   882, -1218, 11695, -1218, -1218, -1218,
   -1218, -1218, -1218, -1218, -1218,  3865,  1044, -1218, -1218, -1218,
    -194, -1218, -1218,   252,  4600,  4670,  4740,  4821, -1218, -1218,
    -270, -1218,  1904,  1902, -1218, -1218, -1218, -1218, -1218, -1218,
    1898,  1901,  1903,  1905, -1218, -1218, -1218, -1218,  1906,  1930,
    1931,  1932,  1933,  1934,  1935,  1936,  1937,  1938,  1939,  1940,
    1942,  1943,  1944,  1951,  1953,  1954,  1955,  1956,  1958,   599,
    1729, -1218, -1218, -1218, -1218, -1218, 11268,    14,  1892,  1959,
    1985, -1218, -1218, -1218, -1218,  1980, -1218,  1986, 10651,  1987,
    3865, 12060, -1218, -1218,  1995,  3005, 11268, -1218,  1996,  1997,
    1998, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218,
   -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218,
   -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218,
   -1218, -1218, -1218, -1218,  1994,  2000, -1218,  3505, -1218,  1394,
   -1218, -1218, -1218, -1218,  -289, 12060,  1993,  1999,  2741,  2811,
   -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, 11268, -1218,
    2881, 12060, 12060, -1218,  3020,  3365,  3241,  3380, -1218
};

  /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
     Performed when YYTABLE does not specify something else to do.  Zero
     means the default is an error.  */
static const yytype_uint16 yydefact[] =
{
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,   479,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,   478,    22,    23,
       0,     0,     4,     0,     0,     0,     0,     0,     8,     9,
       6,     0,   476,    10,     0,    15,     7,   477,   532,     0,
     533,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,   105,     0,   107,
       0,   109,     0,   111,     0,   113,     0,   115,     0,   117,
       0,   119,     0,   121,     0,   123,     0,   125,     0,   127,
       0,   129,     0,   131,     0,   133,     0,   135,     0,   137,
       0,   139,     0,   141,     0,   145,     0,   143,     0,   147,
       0,   149,     0,   151,     0,   153,     0,   155,     0,   159,
       0,   157,     0,   161,     0,   163,     0,   165,     0,   167,
       0,   169,     0,   171,     0,   173,     0,   175,     0,   177,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,   491,   490,   493,   492,
     495,     0,   494,   500,     0,   504,     0,   506,     0,   505,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,   277,     0,   279,     0,   281,     0,
     283,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,   407,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,    60,    66,
      65,    59,    61,    63,    68,    71,    67,    69,   549,   548,
     551,   550,   553,   552,     1,     5,     3,     0,     0,     0,
      12,     0,     0,    14,     0,     0,    17,     0,     0,    19,
       0,     0,    21,     0,     0,   530,   515,   516,   517,     0,
     465,   464,   467,   466,   463,   462,   469,    31,    32,    33,
      34,    35,   468,   471,     0,    57,   470,   473,   472,   475,
     474,    73,    72,    75,    74,    77,    76,    79,    78,    81,
      80,    83,    82,    85,    84,    87,    86,    89,    88,    91,
      90,    93,    92,    95,    94,    97,    96,    99,    98,   363,
     631,   629,   630,    25,   512,     0,     0,    30,    50,     0,
      55,   357,    24,   509,   513,   510,   632,    26,   365,   364,
     367,   366,   101,   100,   103,   102,   104,   106,   108,   110,
     112,   114,   116,   118,   120,   122,   124,   126,   128,   130,
     132,   134,   136,   138,   140,   144,   142,   146,   148,   150,
     152,   154,   158,   156,   160,   162,   164,   166,   168,   170,
     172,   174,   176,   179,   178,   185,   180,   189,   188,   187,
     186,   191,   190,   193,   192,   195,   194,   197,   196,   199,
     198,   201,   200,   203,   202,   205,   204,   207,   206,   209,
     208,   211,   210,   213,   212,   215,   214,   217,   216,   219,
     218,   221,   220,   223,   222,   346,   345,   348,   347,   350,
     349,   356,   355,   497,   496,     0,     0,   508,   507,   182,
     181,   184,   183,   228,   227,   226,   231,   230,   229,   234,
     233,   232,   237,   236,   235,   240,   239,   238,   242,   241,
     244,   243,   246,   245,   248,   247,   250,   249,   252,   251,
     254,   253,   256,   255,   258,   257,   261,   259,   260,   263,
     262,   265,   264,   267,   266,   269,     0,   268,   271,   270,
     273,   272,   275,   274,   276,   278,   280,   282,   285,   284,
     287,   286,   289,   288,   291,   290,   293,   292,   295,   294,
     297,   296,   299,   298,   301,   300,   303,   302,   305,   304,
     307,   306,   309,   308,   311,   310,   313,   312,   315,   314,
     317,   316,   319,   318,   324,   320,   321,   322,   323,   336,
     335,   338,   337,   326,   325,   328,   327,   330,   329,   332,
     331,   334,   333,   340,   339,   342,   341,   344,   343,   369,
     368,   371,   370,   373,   372,   375,   374,   377,   376,   379,
     378,   381,   380,   383,   382,   385,   384,   387,   386,   389,
     388,   391,   390,   393,   392,   395,   394,   397,   396,   399,
     398,   402,   400,   401,   405,   403,   404,   406,   409,   408,
     411,   410,   413,   412,   415,   414,   417,   416,   419,   418,
     421,   420,   225,   224,   423,   422,   425,   424,   427,   426,
     429,   428,   431,   430,   433,   432,     0,     0,     0,     0,
       0,   445,   444,   446,   447,   451,   450,   449,   448,   453,
     452,   455,   454,   457,   456,   459,   458,   461,   460,   352,
     351,   354,   353,     0,     0,     0,   522,     0,   523,     0,
     527,     0,     0,   540,     0,     0,   544,     0,     0,   547,
       0,   481,   482,   480,     0,     0,     0,     0,    58,     0,
      27,     0,     0,     0,     0,    56,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,    62,    64,    70,
       0,     0,     0,     0,     0,     0,   936,   933,   937,   940,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,   889,   891,   893,
     896,     0,     0,     0,     0,     0,   910,   912,   914,   916,
       0,     0,     0,     0,     0,     0,     0,   766,   767,   768,
     691,     0,   703,   704,   649,     0,     0,   641,   644,   645,
     646,     0,   695,   696,   706,   707,   708,     0,     0,     0,
     637,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,   536,     0,     0,     0,    29,   514,    54,    44,
      43,    51,    52,   361,   358,   636,   631,   634,   635,   633,
       0,     0,   435,   434,   437,   436,   439,   438,   441,   440,
     443,   442,     0,   779,     0,   801,     0,   812,     0,   823,
       0,   790,     0,     0,   575,   576,   577,   588,   581,   589,
     582,   587,   579,   586,   578,     0,   580,     0,   583,     0,
     584,   677,   723,   721,   722,     0,     0,     0,     0,     0,
       0,   710,     0,     0,   709,     0,   585,     0,   590,     0,
     716,   715,   714,     0,   697,   699,   698,   711,   712,   713,
     724,     0,   935,     0,   932,     0,   939,   827,     0,   844,
       0,   848,     0,     0,   852,     0,   871,     0,   874,     0,
     855,     0,   861,     0,   858,     0,   864,     0,   867,     0,
       0,   880,     0,   883,     0,   877,     0,   886,     0,     0,
       0,     0,     0,     0,     0,     0,   902,     0,   905,     0,
     908,     0,     0,     0,     0,     0,   669,     0,     0,   919,
       0,   922,     0,   831,     0,   834,     0,   837,     0,   926,
       0,   650,   643,   642,   520,   640,   679,   680,   681,   682,
     683,   684,   685,   686,   687,   688,     0,   689,   692,   705,
       0,   648,   842,     0,   647,     0,   525,     0,   538,     0,
     542,     0,   487,   483,   484,     0,   531,     0,     0,    28,
       0,     0,     0,     0,     0,     0,     0,     0,   624,     0,
     769,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,   594,   554,   555,   563,   556,   557,   562,
       0,     0,     0,   619,     0,     0,   764,   745,   748,   726,
     749,   727,     0,     0,     0,     0,   934,   697,   698,   712,
     713,     0,     0,     0,     0,   598,     0,   603,   558,   559,
     560,   561,     0,     0,   615,     0,   692,   747,   725,     0,
       0,     0,     0,     0,     0,     0,   564,   565,   570,   566,
     567,   568,   569,   571,   572,   573,   574,     0,     0,     0,
       0,     0,     0,     0,   931,   938,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,   863,     0,   866,
       0,   869,     0,     0,     0,     0,     0,     0,     0,     0,
     888,   890,   892,     0,     0,   895,     0,     0,     0,   651,
     638,     0,     0,     0,     0,     0,    45,     0,     0,   909,
     911,   913,   915,     0,   671,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,   927,     0,     0,   765,     0,
     702,     0,   700,     0,   701,     0,     0,     0,     0,     0,
       0,     0,     0,     0,    53,   362,   359,     0,     0,     0,
       0,     0,     0,   780,     0,   778,     0,   771,     0,   772,
       0,     0,     0,   770,   802,     0,   800,     0,   793,     0,
     794,     0,   792,   813,     0,   811,     0,   804,     0,   805,
       0,   803,   824,     0,   822,     0,   815,     0,   816,     0,
     814,   791,     0,   789,     0,   782,     0,   783,     0,   781,
     593,     0,   591,   609,    36,    37,    38,    39,    40,    41,
      42,   607,   608,   606,   604,   605,   618,   616,   617,   672,
     676,   678,     0,     0,     0,     0,     0,     0,   720,   742,
     719,   718,   717,   597,     0,   595,   602,   600,   601,   599,
     614,     0,    57,     0,   622,   610,   612,   611,     0,   760,
     741,   759,   740,   755,   733,   756,   734,   735,   736,   737,
     750,   728,   751,   729,   752,   730,   753,   731,   754,   732,
     758,   739,   757,   738,   828,     0,   825,   845,     0,   849,
     847,   846,   850,   853,   851,   872,   870,   875,   873,   856,
     854,   862,   860,   859,   857,   868,   865,   881,   879,   884,
     882,   878,   876,   887,   885,   897,   894,   899,   898,     0,
       0,   901,   900,   904,   903,   907,     0,     0,   906,     0,
       0,     0,   668,   666,     0,   920,     0,   923,   921,   829,
     830,   832,   833,   835,   836,   930,     0,   929,   690,   694,
       0,   841,   692,     0,     0,     0,     0,     0,   485,   486,
       0,   535,     0,     0,   498,   499,   501,   503,   502,   521,
       0,     0,     0,     0,   628,   626,   627,   625,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,   761,   743,   762,   744,   763,     0,     0,     0,     0,
       0,   639,   652,    49,    46,    47,   670,     0,     0,     0,
     653,   659,   667,   665,    57,     0,     0,   925,     0,     0,
       0,   526,   539,   543,   546,   488,   489,   511,   360,   776,
     777,   774,   775,   773,   798,   799,   796,   797,   795,   809,
     810,   807,   808,   806,   820,   821,   818,   819,   817,   787,
     788,   785,   786,   784,     0,     0,   675,     0,   623,   621,
     620,   693,   826,   843,     0,   662,     0,     0,     0,     0,
     917,   918,   928,   840,   839,   838,   674,   673,     0,    48,
       0,   663,   657,   664,     0,     0,     0,     0,   746
};

  /* YYPGOTO[NTERM-NUM].  */
static const yytype_int16 yypgoto[] =
{
   -1218, -1218, -1218,  2047, -1218, -1218, -1218, -1218, -1218,  -429,
    1224,  1327,  -230,  1088, -1217, -1218, -1218,  -243,  -235, -1218,
    1458, -1218,  -202, -1218,  1457, -1218, -1218, -1218,  1141, -1218,
   -1218, -1027,  1873,  1817,  1976,   127, -1218, -1218, -1218, -1218,
   -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218, -1218,
   -1218, -1051, -1218, -1047, -1218, -1218,  1094, -1218, -1218, -1218,
    1095, -1218, -1218,  -994,  -770, -1218,  -325, -1172,  -894,  -981,
   -1218,   709,   790, -1218, -1218, -1218,   729, -1218, -1218, -1218,
   -1218,   990, -1096,  -487,  -904, -1218,  -755, -1218, -1218, -1218,
    -540,  -861, -1218, -1218, -1218, -1218,    46,   292, -1218, -1218,
   -1218, -1218,   702, -1218
};

  /* YYDEFGOTO[NTERM-NUM].  */
static const yytype_int16 yydefgoto[] =
{
      -1,   210,   211,   212,   213,   214,   215,   216,   217,   577,
     931,   578,   579,  1491,  1041,  1388,   580,   581,  1104,   218,
     481,   482,   483,   219,   486,   487,   220,   221,   924,   222,
     223,   582,   583,   584,   585,   519,   499,   500,   502,   503,
     224,   225,   926,  1033,   505,   506,   508,   509,   511,   512,
     226,  1269,  1303,  1270,  1332,  1333,  1105,  1106,  1107,  1108,
    1109,  1110,  1525,  1242,   586,   587,  1111,  1379,  1006,  1007,
    1008,  1689,  1603,  1604,  1009,  1010,  1500,  1501,  1112,  1275,
    1206,  1207,  1208,  1113,  1114,  1115,  1116,  1014,  1117,  1413,
    1118,  1119,  1210,  1017,  1120,  1121,  1291,  1018,  1019,  1020,
    1190,  1616,  1617,  1021
};

  /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
     positive, shift that token.  If negative, reduce the rule whose
     number is the opposite.  If YYTABLE_NINF, syntax error.  */
static const yytype_int16 yytable[] =
{
     536,   485,   810,   542,   532,  1012,  1394,  1373,  1012,  1385,
     589,  1012,  1599,  1424,  1012,  1738,   230,  1306,  1023,   919,
     228,  1025,  1012,   906,  1027,  1195,  1640,   908,   227,   599,
     921,   600,  1031,   601,  1271,   602,  1272,  1241,  1274,  1246,
    1243,  1251,  1195,  1256,  1195,  1261,  1195,  1039,  1016,   569,
    1195,  1016,   910,   738,  1016,  1236,  1302,  1016,  1296,  1032,
    1040,   363,  1305,  1231,   913,  1016,   231,   916,  1600,  1601,
     232,   365,  1247,  1063,  1252,   534,  1257,   513,  1262,  1705,
     257,  1065,  1706,   233,  1189,  1067,   588,  1069,  1071,   535,
    1127,  1129,   784,  1131,   234,   514,   634,   527,   528,   529,
     530,  1244,  1012,  1134,  1191,   809,  1136,   656,   658,   660,
     662,   664,   666,   668,   670,   672,  1237,  1138,  1140,  1012,
     235,  1012,   478,  1012,   356,   236,   938,  1012,   237,  1142,
    1248,  1144,  1440,   238,  1146,  1148,   939,   527,   528,   529,
     530,  1151,  1441,   239,  1153,  1016,   930,  1253,   721,   723,
     725,  1155,   240,  1258,  1013,   360,   479,  1013,   480,   551,
    1013,  1157,  1016,  1013,  1016,   534,  1016,  1166,  1047,  1049,
    1016,  1013,   259,  1649,   527,   528,   529,   530,  1168,   535,
     241,  1381,  1170,  1179,  1380,  1644,  1181,  1183,  1185,  1187,
    1189,  1249,  1212,  1434,  1619,  1435,   534,  1380,  1287,  1012,
     242,   358,   367,   516,   517,   243,   518,   488,  1254,  1294,
     535,   844,   244,  1429,  1259,  1430,  1358,   484,   693,  1287,
     245,  1287,   534,  1646,   696,   246,  1409,   699,   497,   498,
     702,   882,   936,   937,   886,   888,   535,   705,   247,  1427,
     726,  1290,  1016,   841,   248,   249,   490,  1222,  1336,   492,
     250,  1013,   553,  1699,   557,  1436,   561,  1437,   465,   563,
    1287,  1012,  1290,   565,  1290,   251,   567,   637,  1013,   649,
    1013,   677,  1013,   520,  1012,   679,  1013,   683,  1524,   687,
     797,   799,   801,   862,   899,   901,  1052,   501,  1054,  1056,
    1058,  1060,  1399,   479,   252,   480,  1339,  1345,  1347,   253,
    1349,  1351,  1362,  1290,  1016,  1364,  1366,  1368,  1395,  1412,
     254,  1526,  1641,  1195,  1397,  1622,   522,  1016,  1232,   255,
    1045,   922,   923,  1012,  1048,   785,   786,   787,   788,   494,
     504,  1012,   533,  1422,   507,   256,  1038,   935,   331,   332,
    1683,  1432,   541,   333,   531,   633,   524,  1288,  1013,   655,
     334,   537,  1414,   539,   510,  1374,   543,   570,   571,   572,
     573,   574,   657,  1739,   545,  1375,  1016,   574,  1288,  1015,
    1288,   576,  1015,  1602,  1016,  1015,  -529,   576,  1015,  1684,
    -528,  -545,   229,  -518,   531,   907,  1015,  -519,   736,  1238,
    1012,  1245,   574,   659,   258,   547,   661,   570,   571,   572,
     573,   574,   576,   736,  1238,   574,  1239,   574,   575,  1288,
    1013,   576,  -524,  1240,   911,   576,   335,   576,  1682,  -534,
     364,   531,  1011,  1013,  -537,  1011,   914,  -541,  1011,   917,
     366,  1011,  1064,  1016,   570,   571,   572,   573,   574,  1011,
    1066,  1195,  1560,  -924,  1068,   575,  1070,  1072,   576,  1128,
    1130,  1195,  1132,   570,   571,   572,   573,   574,   663,  1650,
     665,  1192,  1135,  1274,   667,  1137,  1015,   576,   669,   361,
    1274,   479,  1013,   480,  1012,   357,  1139,  1141,   736,  1238,
    1013,  1250,   574,  1015,  1589,  1015,   260,  1015,  1143,   671,
    1145,  1015,   576,  1147,  1149,   736,  1238,   515,  1255,   574,
    1152,   736,  1238,  1154,  1260,   574,   362,  1043,   552,   576,
    1156,  1012,  1012,  1012,  1012,   576,   368,  1016,  1012,  1011,
    1158,  1624,  1625,  1626,  1627,  1000,  1167,  1759,  1012,   570,
     571,   572,   573,   574,  1645,   549,  1011,  1169,  1011,  1013,
    1011,  1171,  1180,   576,  1011,  1182,  1184,  1186,  1188,  -924,
     534,  1213,   359,   369,  1016,  1016,  1016,  1016,   489,   845,
     846,  1016,  1289,  1015,   535,   555,   479,   694,   480,   695,
     720,  1016,  1647,   697,  1359,   698,   700,  1410,   701,   703,
    1003,   704,   261,  1289,  1005,  1289,   706,  1005,   707,   727,
    1005,   728,   842,  1005,   843,  1223,  1337,   491,  1224,  1338,
     493,  1005,   479,   554,   480,   558,   930,   562,  1195,  1380,
     564,   559,   722,   724,   566,   881,  1011,   568,   638,   885,
     650,   521,   678,  1013,  1289,  1015,   680,   590,   684,   592,
     688,   798,   800,   802,   863,   900,   902,  1053,  1015,  1055,
    1057,  1059,  1061,  1195,  1195,  1195,  1195,  1340,  1346,  1348,
    1740,  1350,  1352,  1363,   263,   336,  1365,  1367,  1369,  1396,
    1013,  1013,  1013,  1013,   523,  1398,   534,  1013,  1046,   571,
     572,  1039,  1046,   571,   572,  1039,   534,  1013,  1011,   534,
     535,  1005,   887,   534,  1040,  1012,  1012,  1015,  1040,   337,
     535,  1011,   594,   535,   525,  1015,   534,   535,  1005,   538,
    1005,   540,  1005,   485,   544,   265,  1005,   635,   639,   641,
     535,   643,   546,   645,   647,   651,   653,   673,   675,   681,
    1012,  1012,  1012,  1012,   689,   691,  1411,   534,  1016,  1016,
     534,   708,   710,   712,   714,   716,   338,   267,  1382,   339,
    1011,   535,  1386,   548,   535,   340,   718,   729,  1011,  1654,
     731,   733,   735,   740,  1015,   269,   742,   748,   750,  1659,
     752,   754,   756,  1016,  1016,  1016,  1016,   758,  1195,   760,
     762,   764,   766,   768,   770,   772,   774,   776,  1005,  1195,
     778,   780,   782,  1195,   789,  1195,  1195,  1012,   791,  1664,
    1401,   479,   534,   480,   534,   341,   793,  1749,   534,   795,
     803,   805,   534,   596,   807,   811,   535,  1011,   535,   813,
     815,   817,   535,   819,   821,   823,   535,   825,   827,   271,
     273,   829,   831,   534,   833,   835,   837,   839,   848,   850,
    1016,   852,   854,   856,  1013,  1013,   858,   535,  1015,   860,
    1005,  1012,   864,   866,  1012,  1012,   868,   870,   872,   874,
     889,  1760,   891,  1005,  1764,   893,  1012,  1012,  1012,   895,
    1012,   342,  1012,  1012,   897,  1353,  1355,  1766,  1767,  1013,
    1013,  1013,  1013,   343,   275,  1015,  1015,  1015,  1015,   277,
    1383,   344,  1015,   550,  1016,   279,   345,  1016,  1016,   346,
     526,  1011,  1015,  1329,  1330,  1331,   262,   281,  1440,  1016,
    1016,  1016,  1005,  1016,   534,  1016,  1016,  1297,  1441,   283,
    1005,   347,   348,   556,  1360,   349,   350,   285,   535,  1263,
    1442,   351,  1443,   352,  1403,   479,  1295,   480,  1011,  1011,
    1011,  1011,  1376,  1377,   534,  1011,  1013,   287,   289,  1600,
    1601,  1387,  1438,   291,  1439,  1011,   534,   534,   535,   534,
     353,  1734,   293,   534,   295,   297,   299,   301,   303,   560,
     535,   535,  1304,   535,   305,  1264,  1265,   535,   264,  1005,
    1267,  1268,   354,   307,   309,   591,   355,   593,   527,   528,
     529,   530,  1400,  1273,  1402,   370,  1404,   371,   372,   311,
    1013,   373,   374,  1013,  1013,   313,   597,   375,  1428,  1431,
     315,   317,  1122,  1124,  1126,  1013,  1013,  1013,   319,  1013,
     321,  1013,  1013,   323,   376,   377,   534,   325,   327,   266,
     527,   528,   529,   530,   329,   394,   396,   398,  1165,   400,
     535,   449,   598,   603,   950,  1655,  1177,  1178,  1022,   604,
     595,  1024,   378,   379,  1026,  1660,  1445,   605,  1446,  1015,
    1015,   268,  1447,  1005,  1448,   636,   640,   642,  1449,   644,
    1450,   646,   648,   652,   654,   674,   676,   682,  1454,   270,
    1455,   606,   690,   692,   607,  1665,  1456,   380,  1457,   709,
     711,   713,   715,   717,  1015,  1015,  1015,  1015,   608,   609,
    1005,  1005,  1005,  1005,   719,   730,   610,  1005,   732,   734,
     736,   741,  1011,  1011,   743,   749,   751,  1005,   753,   755,
     757,   381,   611,   612,   613,   759,   382,   761,   763,   765,
     767,   769,   771,   773,   775,   777,   383,   614,   779,   781,
     783,   615,   790,   272,   274,   616,   792,  1011,  1011,  1011,
    1011,  1277,  1279,  1281,   794,   623,   685,   796,   804,   806,
     904,  1015,   808,   812,  1458,   384,  1459,   814,   816,   818,
     574,   820,   822,   824,   617,   826,   828,  1308,  1685,   830,
     832,   385,   834,   836,   838,   840,   849,   851,  1343,   853,
     855,   857,   386,   387,   859,   388,   389,   861,   276,   390,
     865,   867,   391,   278,   869,   871,   873,   875,   890,   280,
     892,   392,   393,   894,  1011,  1015,   402,   896,  1015,  1015,
     403,   282,   898,  1354,  1356,  1327,  1328,  1329,  1330,  1331,
    1015,  1015,  1015,   284,  1015,   531,  1015,  1015,  1384,  1264,
    1265,   286,   404,   903,  1267,  1268,  1298,  1299,  1300,  1301,
     686,  1264,  1265,  1266,  1692,   405,  1267,  1268,  1264,  1265,
    1266,   288,   290,  1267,  1268,   406,  1408,   292,  1011,   407,
     618,  1011,  1011,   408,  1005,  1005,   294,   531,   296,   298,
     300,   302,   304,  1011,  1011,  1011,   619,  1011,   306,  1011,
    1011,  1463,   409,  1464,  1264,  1265,  1266,   308,   310,  1267,
    1268,   410,   620,  1678,   570,   571,   572,   573,   574,  1005,
    1005,  1005,  1005,   312,   411,  1264,  1265,   412,   576,   314,
    1267,  1268,   413,  1440,   316,   318,  1482,  1492,  1495,  1496,
     414,   415,   320,  1441,   322,   416,   417,   324,  1503,  1505,
    1507,   326,   328,   418,  1465,  1451,  1466,  1452,   330,   395,
     397,   399,  1515,   401,  1467,   450,  1468,   419,  1517,  1519,
    1472,  1527,  1473,   420,   920,  1530,  1532,  1534,  1536,  1537,
    1538,  1539,   876,   877,   878,   879,  1005,   880,    -2,   495,
    1474,   421,  1475,  1541,  1543,  1545,  1547,  1549,  1551,  1553,
     422,   423,   -11,   -11,   -13,     2,     3,   -16,   -18,   -20,
    1074,  1075,  1076,  1077,  1292,  1079,  1476,  1081,  1477,  1083,
    1620,  1696,  1621,  1697,   424,   425,     4,   426,     5,  1440,
       6,     7,     8,     9,    10,  1292,   427,  1292,  1698,  1441,
    1005,  1700,  1440,  1005,  1005,   428,    11,   527,   528,   529,
     530,  1460,  1441,  1461,  1735,  1005,  1005,  1005,  1440,  1005,
     429,  1005,  1005,   430,  1469,   431,  1470,   432,  1441,   433,
     434,  1615,   435,   436,   437,   438,  1292,   439,   440,   441,
    1478,   442,  1479,    12,    13,    14,    15,    16,    17,    18,
      19,    20,    21,    22,    23,    24,    25,    26,   443,   444,
      27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
      37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
      47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
      57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
      67,    68,    69,   445,    70,    71,    72,    73,    74,    75,
      76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
      86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
      96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
     106,   107,   108,   109,   110,   111,   112,   113,   114,   115,
     116,   117,   118,   119,   120,   121,   122,   123,   124,   125,
     126,   127,   128,   129,   130,   131,   132,   133,   134,   135,
     136,   137,   138,   139,   140,   141,   142,   143,   144,   145,
     146,   147,   446,   447,   448,   451,   148,   149,   150,   151,
     152,   153,   154,   155,   156,   157,   158,   159,   160,   161,
     162,   163,   164,   165,   166,   167,   168,   169,   170,   171,
     172,   173,   174,   175,   176,   177,   178,   179,   180,   181,
     182,   183,   184,   185,   186,   187,  1690,   188,   189,   452,
     453,   454,  1695,   190,   455,   191,   192,   193,   194,   195,
     196,   197,   198,   199,   200,   201,   202,   203,   456,   457,
     458,   459,   460,   461,   531,   462,   463,   464,   466,   467,
     204,   205,   206,   905,   468,   469,   470,   570,   571,   572,
     573,   574,   570,   571,   572,   573,   574,   471,   575,   472,
     473,   576,   474,   575,   475,   476,   576,  1196,  1197,  1198,
    1199,  1200,  1201,  1202,  1203,  1204,   477,   933,   207,  1419,
     909,   621,  1737,   622,   624,   625,   208,   626,   627,   628,
     629,   927,   630,   209,  1690,   631,  1407,   632,   912,   929,
     744,  1189,  1615,  -624,  -624,  -624,  -624,  -624,  -624,  -624,
    -624,  -624,  -624,  -624,  -624,  1205,   745,   746,   747,   847,
     883,   884,  -624,  -624,  -624,  -624,  -624,  -624,  -624,  -624,
     934,  -624,  -624,  -624,  -624,  -624,  -624,  -624,  -624,  -624,
     915,  -624,   918,  -624,   925,   928,   940,  -624,   941,  -624,
    -624,  -624,  -624,  -624,  -624,  -624,  -624,   942,   943,  -624,
    -624,  -624,   944,   945,  1765,  -624,  -624,  -624,  -624,  -624,
    -624,  1189,   946,  -592,  -592,  -592,  -592,  -592,  -592,  -592,
    -592,  -592,  -592,  -592,  -592,   948,  1028,  1029,  1030,  1034,
    1035,  1036,  -592,  -592,  -592,  -592,  -592,  -592,  -592,  -592,
    1209,  -592,  -592,  -592,  -592,  -592,  -592,  -592,  -592,  -592,
    1037,  -592,  1044,  -592,  1050,  1051,  1062,  -592,  1133,  -592,
    -592,  -592,  -592,  -592,  -592,  -592,  -592,  1150,  1159,  -592,
    -592,  -592,  1225,  1160,  1161,  -592,  -592,  -592,  -592,  -592,
    -592,  1273,  1162,  -596,  -596,  -596,  -596,  -596,  -596,  -596,
    -596,  -596,  -596,  -596,  -596,  1163,  1172,  1173,  1174,  1175,
    1211,  1214,  -596,  -596,  -596,  -596,  -596,  -596,  -596,  -596,
    1215,  -596,  -596,  -596,  -596,  -596,  -596,  -596,  -596,  -596,
    1217,  -596,  1219,  -596,  1221,  1227,  1228,  -596,  1230,  -596,
    -596,  -596,  -596,  -596,  -596,  -596,  -596,  1233,  1235,  -596,
    -596,  -596,  1234,  1282,  1283,  -596,  -596,  -596,  -596,  -596,
    -596,  1273,  1284,  -613,  -613,  -613,  -613,  -613,  -613,  -613,
    -613,  -613,  -613,  -613,  -613,  1344,  1357,  1361,  1370,  1371,
    1372,  1389,  -613,  -613,  -613,  -613,  -613,  -613,  -613,  -613,
    1390,  -613,  -613,  -613,  -613,  -613,  -613,  -613,  -613,  -613,
    1391,  -613,  1392,  -613,  1405,  1406,  1415,  -613,  1416,  -613,
    -613,  -613,  -613,  -613,  -613,  -613,  -613,  1417,  1418,  -613,
    -613,  -613,  1420,  1423,  1425,  -613,  -613,  -613,  -613,  -613,
    -613,  1313,  1314,  1315,  1316,  1317,  1318,  1319,  1320,  1321,
    1322,  1323,  1324,  1325,  1326,  1327,  1328,  1329,  1330,  1331,
    -624,  1323,  1324,  1325,  1326,  1327,  1328,  1329,  1330,  1331,
    1433,  1426,  1444,  1453,  1462,  1471,  -624,  -624,  -624,  -624,
    -624,  -624,  -624,  -624,  -624,  -624,  -624,  -624,  -624,  -624,
    -624,  -624,  -624,  -624,  -624,  -624,  -624,  -624,  -624,  1499,
    1508,  -695,  -696,  -707,  -708,  -624,  1510,  1511,  1555,  1528,
    -624,  1554,  1556,  1558,  -624,  -624,  1557,  -624,  -624,  -624,
    -924,  -624,  1559,  1562,  1563,  1564,  -624,  1565,  1566,  1567,
    -592,  1568,  1569,  1570,  1571,  1572,  1573,  1574,  1575,  1576,
    1577,  1578,  1579,  1580,  1581,  1590,  -592,  -592,  -592,  -592,
    -592,  -592,  -592,  -592,  -592,  -592,  -592,  -592,  -592,  -592,
    -592,  -592,  -592,  -592,  -592,  -592,  -592,  -592,  -592,  1582,
    1583,  1584,  1585,  1586,  1587,  1588,  1591,  1592,  1593,  1594,
    -592,  1595,  1598,  1605,  -592,  -592,  1606,  -592,  -592,  -592,
    -924,  -592,  1596,  1597,  1607,  1608,  -592,  1609,  1610,  1611,
    -596,  1612,  1613,  1614,  1205,  1619,  1623,  1628,  1629,  1630,
    1632,  1633,  1634,  1642,  1669,  1643,  -596,  -596,  -596,  -596,
    -596,  -596,  -596,  -596,  -596,  -596,  -596,  -596,  -596,  -596,
    -596,  -596,  -596,  -596,  -596,  -596,  -596,  -596,  -596,  1635,
    1636,  1637,  1638,  1671,  1648,  1651,  1652,  1653,  1656,  1673,
    -596,  1657,  1658,  1661,  -596,  -596,  1662,  -596,  -596,  -596,
    1663,  -596,  1666,  1667,  1668,  1670,  -596,  1675,  1677,  1679,
    -613,  1680,  1686,  1707,  1708,  1691,  1741,  1709,   496,  1229,
    1710,  1042,  1711,   737,  1712,  1713,  -613,  -613,  -613,  -613,
    -613,  -613,  -613,  -613,  -613,  -613,  -613,  -613,  -613,  -613,
    -613,  -613,  -613,  -613,  -613,  -613,  -613,  -613,  -613,  1714,
    1715,  1716,  1717,  1718,  1719,  1720,  1721,  1722,  1723,  1724,
    -613,  1725,  1726,  1727,  -613,  -613,     1,  -613,  -613,  -613,
    1728,  -613,  1729,  1730,  1731,  1732,  -613,  1733,  1742,   -11,
     -11,   -13,     2,     3,   -16,   -18,   -20,  1316,  1317,  1318,
    1319,  1320,  1321,  1322,  1323,  1324,  1325,  1326,  1327,  1328,
    1329,  1330,  1331,     4,  1743,     5,  1744,     6,     7,     8,
       9,    10,  1745,  1748,  1750,  1753,  1754,  1755,  1756,  1761,
    1494,   947,   949,    11,  1757,  1762,  1421,   739,  1497,  1498,
    1309,  1310,  1311,  1312,  1313,  1314,  1315,  1316,  1317,  1318,
    1319,  1320,  1321,  1322,  1323,  1324,  1325,  1326,  1327,  1328,
    1329,  1330,  1331,   932,  1693,     0,  1618,  1747,  1752,  1736,
      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
      22,    23,    24,    25,    26,  1393,     0,    27,    28,    29,
      30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
      40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
      50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
      60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
       0,    70,    71,    72,    73,    74,    75,    76,    77,    78,
      79,    80,    81,    82,    83,    84,    85,    86,    87,    88,
      89,    90,    91,    92,    93,    94,    95,    96,    97,    98,
      99,   100,   101,   102,   103,   104,   105,   106,   107,   108,
     109,   110,   111,   112,   113,   114,   115,   116,   117,   118,
     119,   120,   121,   122,   123,   124,   125,   126,   127,   128,
     129,   130,   131,   132,   133,   134,   135,   136,   137,   138,
     139,   140,   141,   142,   143,   144,   145,   146,   147,     0,
       0,     0,     0,   148,   149,   150,   151,   152,   153,   154,
     155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
     165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
     175,   176,   177,   178,   179,   180,   181,   182,   183,   184,
     185,   186,   187,     0,   188,   189,     0,     0,     0,     0,
     190,     0,   191,   192,   193,   194,   195,   196,   197,   198,
     199,   200,   201,   202,   203,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,   204,   205,   206,
       0,     0,     0,     0,     0,  1309,  1310,  1311,  1312,  1313,
    1314,  1315,  1316,  1317,  1318,  1319,  1320,  1321,  1322,  1323,
    1324,  1325,  1326,  1327,  1328,  1329,  1330,  1331,     0,     0,
       0,     0,     0,     0,  1520,   207,   951,   952,   953,   954,
     955,     0,     0,   208,     0,   960,   961,   962,  1509,     0,
     209,     0,     0,     0,     0,   963,   964,   965,   966,   967,
     968,   969,   970,     0,   971,   972,   973,   974,   975,   976,
     977,   978,   979,     0,   980,     0,   981,     0,     0,     0,
       0,     0,   983,   984,   985,   986,   987,   988,   989,     0,
       0,     0,     0,   992,   993,     0,     0,     0,   994,   995,
     996,   997,   998,   999,  1073,  1074,  1075,  1076,  1077,  1078,
    1079,  1080,  1081,  1082,  1083,  1084,  1085,  1086,  1087,  1088,
    1521,  1090,  1763,     0,   951,   952,   953,   954,   955,   956,
     957,   958,   959,   960,   961,   962,     0,     0,     0,     0,
       0,     0,     0,   963,   964,   965,   966,   967,   968,   969,
     970,     0,   971,   972,   973,   974,   975,   976,   977,   978,
     979,     0,   980,     0,   981,     0,     0,     0,   982,     0,
     983,   984,   985,   986,   987,   988,   989,   990,  -656,  -656,
     991,   992,   993,     0,     0,     0,   994,   995,   996,   997,
     998,   999,  1193,     0,   951,   952,   953,   954,   955,   956,
     957,   958,   959,   960,   961,   962,     0,     0,     0,     0,
       0,     0,     0,   963,   964,   965,   966,   967,   968,   969,
     970,     0,   971,   972,   973,   974,   975,   976,   977,   978,
     979,     0,   980,     0,   981,     0,     0,     0,   982,     0,
     983,   984,   985,   986,   987,   988,   989,   990,  -658,  -658,
     991,   992,   993,     0,     0,     0,   994,   995,   996,   997,
     998,   999,  1193,     0,   951,   952,   953,   954,   955,   956,
     957,   958,   959,   960,   961,   962,     0,     0,     0,     0,
       0,     0,     0,   963,   964,   965,   966,   967,   968,   969,
     970,     0,   971,   972,   973,   974,   975,   976,   977,   978,
     979,     0,   980,     0,   981,     0,     0,     0,   982,     0,
     983,   984,   985,   986,   987,   988,   989,   990,  -660,  -660,
     991,   992,   993,     0,     0,     0,   994,   995,   996,   997,
     998,   999,     0,  1000,  1091,  1309,  1310,  1311,  1312,  1313,
    1314,  1315,  1316,  1317,  1318,  1319,  1320,  1321,  1322,  1323,
    1324,  1325,  1326,  1327,  1328,  1329,  1330,  1331,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,  1092,     0,
       0,     0,  1093,     0,  1094,  1095,  1096,  1097,  1561,  1098,
    1099,  1100,  1522,  1523,     0,  1101,   574,  1002,  1003,     0,
       0,     0,     0,  1164,  1103,     0,   576,     0,     0,     0,
       0,  1193,     0,   951,   952,   953,   954,   955,   956,   957,
     958,   959,   960,   961,   962,     0,     0,     0,     0,     0,
       0,  1000,   963,   964,   965,   966,   967,   968,   969,   970,
       0,   971,   972,   973,   974,   975,   976,   977,   978,   979,
       0,   980,     0,   981,     0,     0,     0,   982,     0,   983,
     984,   985,   986,   987,   988,   989,   990,  -654,  -654,   991,
     992,   993,     0,     0,     0,   994,   995,   996,   997,   998,
     999,  1001,     0,     0,     0,  1002,  1003,     0,     0,  1004,
       0,     0,     0,  -656,     0,     0,     0,     0,     0,     0,
       0,  1000,  1309,  1310,  1311,  1312,  1313,  1314,  1315,  1316,
    1317,  1318,  1319,  1320,  1321,  1322,  1323,  1324,  1325,  1326,
    1327,  1328,  1329,  1330,  1331,  1312,  1313,  1314,  1315,  1316,
    1317,  1318,  1319,  1320,  1321,  1322,  1323,  1324,  1325,  1326,
    1327,  1328,  1329,  1330,  1331,  1672,     0,     0,     0,     0,
       0,  1001,     0,     0,     0,  1002,  1003,     0,     0,  1004,
       0,     0,     0,  -658,     0,     0,     0,     0,     0,     0,
       0,  1000,  1309,  1310,  1311,  1312,  1313,  1314,  1315,  1316,
    1317,  1318,  1319,  1320,  1321,  1322,  1323,  1324,  1325,  1326,
    1327,  1328,  1329,  1330,  1331,  1314,  1315,  1316,  1317,  1318,
    1319,  1320,  1321,  1322,  1323,  1324,  1325,  1326,  1327,  1328,
    1329,  1330,  1331,     0,     0,  1674,     0,     0,     0,     0,
       0,  1001,     0,     0,     0,  1002,  1003,     0,     0,  1004,
       0,     0,  1193,  -660,   951,   952,   953,   954,   955,   956,
     957,   958,   959,   960,   961,   962,     0,     0,     0,     0,
       0,     0,     0,   963,   964,   965,   966,   967,   968,   969,
     970,     0,   971,   972,   973,   974,   975,   976,   977,   978,
     979,     0,   980,     0,   981,     0,     0,     0,   982,     0,
     983,   984,   985,   986,   987,   988,   989,   990,  -661,  -661,
     991,   992,   993,     0,     0,     0,   994,   995,   996,   997,
     998,   999,     0,     0,     0,     0,     0,     0,     0,     0,
    1000,  1309,  1310,  1311,  1312,  1313,  1314,  1315,  1316,  1317,
    1318,  1319,  1320,  1321,  1322,  1323,  1324,  1325,  1326,  1327,
    1328,  1329,  1330,  1331,  1315,  1316,  1317,  1318,  1319,  1320,
    1321,  1322,  1323,  1324,  1325,  1326,  1327,  1328,  1329,  1330,
    1331,     0,     0,     0,  1751,     0,     0,     0,     0,     0,
    1001,     0,     0,     0,  1002,  1003,     0,     0,  1004,     0,
       0,  1193,  -654,   951,   952,   953,   954,   955,   956,   957,
     958,   959,   960,   961,   962,     0,     0,     0,     0,     0,
       0,     0,   963,   964,   965,   966,   967,   968,   969,   970,
       0,   971,   972,   973,   974,   975,   976,   977,   978,   979,
       0,   980,     0,   981,     0,     0,     0,   982,     0,   983,
     984,   985,   986,   987,   988,   989,   990,  -655,  -655,   991,
     992,   993,     0,     0,     0,   994,   995,   996,   997,   998,
     999,  1193,     0,   951,   952,   953,   954,   955,   956,   957,
     958,   959,   960,   961,   962,     0,     0,     0,     0,     0,
       0,     0,   963,   964,   965,   966,   967,   968,   969,   970,
       0,   971,   972,   973,   974,   975,   976,   977,   978,   979,
       0,   980,     0,   981,     0,     0,     0,   982,     0,   983,
     984,   985,   986,   987,   988,   989,   990,     0,     0,   991,
     992,   993,     0,     0,     0,   994,   995,   996,   997,   998,
     999,  1193,     0,   951,   952,   953,   954,   955,   956,   957,
     958,   959,   960,   961,   962,     0,     0,     0,     0,     0,
       0,  1000,   963,   964,   965,   966,   967,   968,   969,   970,
       0,   971,   972,   973,   974,   975,   976,   977,   978,   979,
       0,   980,     0,   981,     0,     0,     0,   982,     0,   983,
     984,   985,   986,   987,   988,   989,   990,     0,     0,   991,
     992,   993,     0,     0,     0,   994,   995,   996,   997,   998,
     999,  1001,     0,     0,     0,  1002,  1003,     0,     0,  1004,
       0,     0,  1193,  -661,   951,   952,   953,   954,   955,   956,
     957,   958,   959,   960,   961,   962,     0,     0,     0,     0,
       0,     0,     0,   963,   964,   965,   966,   967,   968,   969,
     970,     0,   971,   972,   973,   974,   975,   976,   977,   978,
     979,     0,   980,     0,   981,     0,     0,     0,   982,     0,
     983,   984,   985,   986,   987,   988,   989,   990,     0,     0,
     991,   992,   993,     0,     0,     0,   994,   995,   996,   997,
     998,   999,     0,     0,     0,     0,     0,     0,     0,     0,
    1000,  1309,  1310,  1311,  1312,  1313,  1314,  1315,  1316,  1317,
    1318,  1319,  1320,  1321,  1322,  1323,  1324,  1325,  1326,  1327,
    1328,  1329,  1330,  1331,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,  1768,     0,     0,     0,     0,     0,
    1001,     0,     0,     0,  1002,  1003,     0,     0,  1004,     0,
       0,     0,  -655,     0,     0,     0,     0,     0,     0,     0,
    1000,  1309,  1310,  1311,  1312,  1313,  1314,  1315,  1316,  1317,
    1318,  1319,  1320,  1321,  1322,  1323,  1324,  1325,  1326,  1327,
    1328,  1329,  1330,  1331,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,  1676,     0,     0,     0,     0,     0,     0,     0,
    1001,     0,     0,     0,  1002,  1003,     0,     0,  1004,     0,
       0,     0,  1194,     0,     0,     0,     0,     0,     0,     0,
    1000,  1309,  1310,  1311,  1312,  1313,  1314,  1315,  1316,  1317,
    1318,  1319,  1320,  1321,  1322,  1323,  1324,  1325,  1326,  1327,
    1328,  1329,  1330,  1331,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,  1758,     0,     0,     0,     0,     0,     0,     0,
    1001,     0,     0,     0,  1002,  1003,     0,     0,  1004,     0,
       0,  1193,  1216,   951,   952,   953,   954,   955,   956,   957,
     958,   959,   960,   961,   962,     0,     0,     0,     0,     0,
       0,  1000,   963,   964,   965,   966,   967,   968,   969,   970,
       0,   971,   972,   973,   974,   975,   976,   977,   978,   979,
       0,   980,     0,   981,     0,     0,     0,   982,     0,   983,
     984,   985,   986,   987,   988,   989,   990,     0,     0,   991,
     992,   993,     0,     0,     0,   994,   995,   996,   997,   998,
     999,  1001,     0,     0,     0,  1002,  1003,     0,     0,  1004,
       0,     0,  1193,  1218,   951,   952,   953,   954,   955,   956,
     957,   958,   959,   960,   961,   962,     0,     0,     0,     0,
       0,     0,     0,   963,   964,   965,   966,   967,   968,   969,
     970,     0,   971,   972,   973,   974,   975,   976,   977,   978,
     979,     0,   980,     0,   981,     0,     0,     0,   982,     0,
     983,   984,   985,   986,   987,   988,   989,   990,     0,     0,
     991,   992,   993,     0,     0,     0,   994,   995,   996,   997,
     998,   999,  1193,     0,   951,   952,   953,   954,   955,   956,
     957,   958,   959,   960,   961,   962,     0,     0,     0,     0,
       0,     0,     0,   963,   964,   965,   966,   967,   968,   969,
     970,     0,   971,   972,   973,   974,   975,   976,   977,   978,
     979,     0,   980,     0,   981,     0,     0,     0,   982,     0,
     983,   984,   985,   986,   987,   988,   989,   990,     0,     0,
     991,   992,   993,     0,     0,     0,   994,   995,   996,   997,
     998,   999,  1193,     0,   951,   952,   953,   954,   955,   956,
     957,   958,   959,   960,   961,   962,     0,     0,     0,     0,
       0,     0,     0,   963,   964,   965,   966,   967,   968,   969,
     970,     0,   971,   972,   973,   974,   975,   976,   977,   978,
     979,     0,   980,     0,   981,     0,     0,     0,   982,     0,
     983,   984,   985,   986,   987,   988,   989,   990,     0,     0,
     991,   992,   993,     0,     0,     0,   994,   995,   996,   997,
     998,   999,     0,     0,     0,     0,     0,     0,     0,     0,
    1000,  1309,  1310,  1311,  1312,  1313,  1314,  1315,  1316,  1317,
    1318,  1319,  1320,  1321,  1322,  1323,  1324,  1325,  1326,  1327,
    1328,  1329,  1330,  1331,  1310,  1311,  1312,  1313,  1314,  1315,
    1316,  1317,  1318,  1319,  1320,  1321,  1322,  1323,  1324,  1325,
    1326,  1327,  1328,  1329,  1330,  1331,     0,     0,     0,     0,
    1001,     0,     0,     0,  1002,  1003,     0,     0,  1004,     0,
       0,  1193,  1220,   951,   952,   953,   954,   955,   956,   957,
     958,   959,   960,   961,   962,     0,     0,     0,     0,     0,
       0,  1000,   963,   964,   965,   966,   967,   968,   969,   970,
       0,   971,   972,   973,   974,   975,   976,   977,   978,   979,
       0,   980,     0,   981,     0,     0,     0,   982,     0,   983,
     984,   985,   986,   987,   988,   989,   990,     0,     0,   991,
     992,   993,     0,     0,     0,   994,   995,   996,   997,   998,
     999,  1001,     0,     0,     0,  1002,  1003,     0,     0,  1004,
       0,     0,     0,  1226,     0,     0,     0,     0,     0,     0,
       0,  1000,  1311,  1312,  1313,  1314,  1315,  1316,  1317,  1318,
    1319,  1320,  1321,  1322,  1323,  1324,  1325,  1326,  1327,  1328,
    1329,  1330,  1331,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,  1001,     0,     0,     0,  1002,  1003,     0,     0,  1004,
       0,     0,     0,  1512,     0,     0,     0,     0,     0,     0,
       0,  1000,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,  1001,     0,     0,     0,  1002,  1003,     0,     0,  1004,
       0,     0,  1193,  1631,   951,   952,   953,   954,   955,   956,
     957,   958,   959,   960,   961,   962,     0,     0,     0,     0,
       0,     0,     0,   963,   964,   965,   966,   967,   968,   969,
     970,     0,   971,   972,   973,   974,   975,   976,   977,   978,
     979,     0,   980,     0,   981,     0,     0,     0,   982,     0,
     983,   984,   985,   986,   987,   988,   989,   990,     0,     0,
     991,   992,   993,     0,     0,     0,   994,   995,   996,   997,
     998,   999,     0,     0,     0,     0,     0,     0,     0,     0,
    1000,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1001,     0,     0,     0,  1002,  1003,     0,     0,  1004,     0,
       0,  1193,  1639,   951,   952,   953,   954,   955,   956,   957,
     958,   959,   960,   961,   962,     0,     0,     0,     0,     0,
       0,     0,   963,   964,   965,   966,   967,   968,   969,   970,
       0,   971,   972,   973,   974,   975,   976,   977,   978,   979,
       0,   980,     0,   981,     0,     0,     0,   982,     0,   983,
     984,   985,   986,   987,   988,   989,   990,     0,     0,   991,
     992,   993,     0,     0,     0,   994,   995,   996,   997,   998,
     999,  1193,     0,   951,   952,   953,   954,   955,   956,   957,
     958,   959,   960,   961,   962,     0,     0,     0,     0,     0,
       0,     0,   963,   964,   965,   966,   967,   968,   969,   970,
       0,   971,   972,   973,   974,   975,   976,   977,   978,   979,
       0,   980,     0,   981,     0,     0,     0,   982,     0,   983,
     984,   985,   986,   987,   988,   989,   990,     0,     0,   991,
     992,   993,     0,     0,     0,   994,   995,   996,   997,   998,
     999,  1193,     0,   951,   952,   953,   954,   955,   956,   957,
     958,   959,   960,   961,   962,     0,     0,     0,     0,     0,
       0,  1000,   963,   964,   965,   966,   967,   968,   969,   970,
       0,   971,   972,   973,   974,   975,   976,   977,   978,   979,
       0,   980,     0,   981,     0,     0,     0,   982,     0,   983,
     984,   985,   986,   987,   988,   989,   990,     0,     0,   991,
     992,   993,     0,     0,     0,   994,   995,   996,   997,   998,
     999,  1001,     0,     0,     0,  1002,  1003,     0,     0,  1004,
       0,     0,  1193,  1681,   951,   952,   953,   954,   955,   956,
     957,   958,   959,   960,   961,   962,     0,     0,     0,     0,
       0,     0,     0,   963,   964,   965,   966,   967,   968,   969,
     970,     0,   971,   972,   973,   974,   975,   976,   977,   978,
     979,     0,   980,     0,   981,     0,     0,     0,   982,     0,
     983,   984,   985,   986,   987,   988,   989,   990,     0,     0,
     991,   992,   993,     0,     0,     0,   994,   995,   996,   997,
     998,   999,     0,     0,     0,     0,     0,     0,     0,     0,
    1000,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1001,     0,     0,     0,  1002,  1003,     0,     0,  1004,     0,
       0,     0,  1701,     0,     0,     0,     0,     0,     0,     0,
    1000,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1001,     0,     0,     0,  1002,  1003,     0,     0,  1004,     0,
       0,     0,  1702,     0,     0,     0,     0,     0,     0,     0,
    1000,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1001,     0,     0,     0,  1002,  1003,     0,     0,  1004,     0,
       0,     0,  1703,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,  1000,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,  1001,     0,     0,     0,  1002,  1003,     0,     0,  1004,
       0,     0,  1483,  1704,   951,   952,   953,   954,   955,     0,
       0,     0,     0,   960,   961,   962,     0,     0,     0,     0,
       0,     0,     0,   963,   964,   965,   966,   967,   968,   969,
     970,     0,   971,   972,   973,   974,   975,   976,   977,   978,
     979,     0,   980,     0,   981,     0,     0,     0,     0,     0,
     983,   984,   985,   986,   987,   988,   989,     0,     0,     0,
       0,   992,   993,     0,     0,     0,   994,   995,   996,   997,
     998,   999,  1073,  1074,  1075,  1076,  1077,  1078,  1079,  1080,
    1081,  1082,  1083,  1084,  1085,  1086,  1087,  1088,  1089,  1090,
    1484,  1485,  1486,  1487,  1488,  1489,  1493,     0,   951,   952,
     953,   954,   955,     0,     0,     0,     0,   960,   961,   962,
       0,     0,     0,     0,     0,     0,     0,   963,   964,   965,
     966,   967,   968,   969,   970,     0,   971,   972,   973,   974,
     975,   976,   977,   978,   979,     0,   980,     0,   981,     0,
       0,     0,     0,     0,   983,   984,   985,   986,   987,   988,
     989,     0,     0,     0,     0,   992,   993,     0,     0,     0,
     994,   995,   996,   997,   998,   999,  1073,  1074,  1075,  1076,
    1077,  1078,  1079,  1080,  1081,  1082,  1083,  1084,  1085,  1086,
    1087,  1088,  1089,  1090,  1484,  1485,  1486,  1487,  1488,  1489,
    1285,     0,   951,   952,   953,   954,   955,     0,     0,     0,
       0,   960,   961,   962,     0,     0,     0,     0,     0,     0,
       0,   963,   964,   965,   966,   967,   968,   969,   970,     0,
     971,   972,   973,   974,   975,   976,   977,   978,   979,     0,
     980,     0,   981,     0,     0,     0,     0,     0,   983,   984,
     985,   986,   987,   988,   989,     0,     0,     0,     0,   992,
     993,     0,     0,     0,   994,   995,   996,   997,   998,   999,
    1073,  1074,  1075,  1076,  1077,  1078,  1079,  1080,  1081,  1082,
    1083,  1084,  1085,  1086,  1087,  1088,  1089,  1090,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,  1000,  1091,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,  1092,  1490,     0,     0,
    1093,     0,  1094,  1095,  1096,  1097,     0,  1098,  1099,  1100,
     535,  1001,     0,  1101,     0,  1002,  1003,     0,     0,     0,
       0,  1164,  1103,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,  1000,  1091,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1092,  1490,     0,     0,  1093,     0,  1094,  1095,  1096,  1097,
       0,  1098,  1099,  1100,   535,  1001,     0,  1101,     0,  1002,
    1003,     0,     0,     0,     0,  1164,  1103,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,  1000,
    1091,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,  1092,     0,     0,     0,  1093,     0,
    1094,  1095,  1096,  1097,     0,  1098,  1099,  1100,   535,  1001,
       0,  1101,     0,  1002,  1003,     0,     0,     0,  1286,  1164,
    1103,  1285,     0,   951,   952,   953,   954,   955,     0,     0,
       0,     0,   960,   961,   962,     0,     0,     0,     0,     0,
       0,     0,   963,   964,   965,   966,   967,   968,   969,   970,
       0,   971,   972,   973,   974,   975,   976,   977,   978,   979,
       0,   980,     0,   981,     0,     0,     0,     0,     0,   983,
     984,   985,   986,   987,   988,   989,     0,     0,     0,     0,
     992,   993,     0,     0,     0,   994,   995,   996,   997,   998,
     999,  1073,  1074,  1075,  1076,  1077,  1078,  1079,  1080,  1081,
    1082,  1083,  1084,  1085,  1086,  1087,  1088,  1089,  1090,  1285,
       0,   951,   952,   953,   954,   955,     0,     0,     0,     0,
     960,   961,   962,     0,     0,     0,     0,     0,     0,     0,
     963,   964,   965,   966,   967,   968,   969,   970,     0,   971,
     972,   973,   974,   975,   976,   977,   978,   979,     0,   980,
       0,   981,     0,     0,     0,     0,     0,   983,   984,   985,
     986,   987,   988,   989,     0,     0,     0,     0,   992,   993,
       0,     0,     0,   994,   995,   996,   997,   998,   999,  1073,
    1074,  1075,  1076,  1077,  1078,  1079,  1080,  1081,  1082,  1083,
    1084,  1085,  1086,  1087,  1088,  1089,  1090,  1687,     0,   951,
     952,   953,   954,   955,     0,     0,     0,     0,   960,   961,
     962,     0,     0,     0,     0,     0,     0,     0,   963,   964,
     965,   966,   967,   968,   969,   970,     0,   971,   972,   973,
     974,   975,   976,   977,   978,   979,     0,   980,     0,   981,
       0,     0,     0,     0,     0,   983,   984,   985,   986,   987,
     988,   989,     0,     0,     0,     0,   992,   993,     0,     0,
       0,   994,   995,   996,   997,   998,   999,  1073,  1074,  1075,
    1076,  1077,  1078,  1079,  1080,  1081,  1082,  1083,  1084,  1085,
    1086,  1087,  1088,  1089,  1090,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1000,  1091,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,  1092,     0,     0,     0,  1093,
       0,  1094,  1095,  1096,  1097,     0,  1098,  1099,  1100,   535,
    1001,     0,  1101,     0,  1002,  1003,     0,     0,     0,  1334,
    1164,  1103,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,  1000,  1091,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,  1092,     0,     0,     0,  1093,     0,  1094,
    1095,  1096,  1097,     0,  1098,  1099,  1100,   535,  1001,     0,
    1101,     0,  1002,  1003,     0,     0,     0,  1335,  1164,  1103,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,  1000,  1091,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,  1092,     0,  1688,     0,  1093,     0,  1094,  1095,  1096,
    1097,     0,  1098,  1099,  1100,   535,  1001,     0,  1101,     0,
    1002,  1003,     0,     0,     0,     0,  1164,  1103,  1176,     0,
     951,   952,   953,   954,   955,     0,     0,     0,     0,   960,
     961,   962,     0,     0,     0,     0,     0,     0,     0,   963,
     964,   965,   966,   967,   968,   969,   970,     0,   971,   972,
     973,   974,   975,   976,   977,   978,   979,     0,   980,     0,
     981,     0,     0,     0,     0,     0,   983,   984,   985,   986,
     987,   988,   989,     0,     0,     0,     0,   992,   993,     0,
       0,     0,   994,   995,   996,   997,   998,   999,  1073,  1074,
    1075,  1076,  1077,  1078,  1079,  1080,  1081,  1082,  1083,  1084,
    1085,  1086,  1087,  1088,  1089,  1090,  1276,     0,   951,   952,
     953,   954,   955,     0,     0,     0,     0,   960,   961,   962,
       0,     0,     0,     0,     0,     0,     0,   963,   964,   965,
     966,   967,   968,   969,   970,     0,   971,   972,   973,   974,
     975,   976,   977,   978,   979,     0,   980,     0,   981,     0,
       0,     0,     0,     0,   983,   984,   985,   986,   987,   988,
     989,     0,     0,     0,     0,   992,   993,     0,     0,     0,
     994,   995,   996,   997,   998,   999,  1073,  1074,  1075,  1076,
    1077,  1078,  1079,  1080,  1081,  1082,  1083,  1084,  1085,  1086,
    1087,  1088,  1089,  1090,  1278,     0,   951,   952,   953,   954,
     955,     0,     0,     0,     0,   960,   961,   962,     0,     0,
       0,     0,     0,     0,     0,   963,   964,   965,   966,   967,
     968,   969,   970,     0,   971,   972,   973,   974,   975,   976,
     977,   978,   979,     0,   980,     0,   981,     0,     0,     0,
       0,     0,   983,   984,   985,   986,   987,   988,   989,     0,
       0,     0,     0,   992,   993,     0,     0,     0,   994,   995,
     996,   997,   998,   999,  1073,  1074,  1075,  1076,  1077,  1078,
    1079,  1080,  1081,  1082,  1083,  1084,  1085,  1086,  1087,  1088,
    1089,  1090,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,  1000,  1091,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,  1092,     0,     0,     0,  1093,     0,  1094,  1095,
    1096,  1097,     0,  1098,  1099,  1100,   535,  1001,     0,  1101,
       0,  1002,  1003,     0,     0,     0,     0,  1164,  1103,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,  1000,  1091,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1092,     0,     0,     0,  1093,     0,  1094,  1095,  1096,  1097,
       0,  1098,  1099,  1100,   535,  1001,     0,  1101,     0,  1002,
    1003,     0,     0,     0,     0,  1164,  1103,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,  1000,  1091,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,  1092,     0,
       0,     0,  1093,     0,  1094,  1095,  1096,  1097,     0,  1098,
    1099,  1100,   535,  1001,     0,  1101,     0,  1002,  1003,     0,
       0,     0,     0,  1164,  1103,  1280,     0,   951,   952,   953,
     954,   955,     0,     0,     0,     0,   960,   961,   962,     0,
       0,     0,     0,     0,     0,     0,   963,   964,   965,   966,
     967,   968,   969,   970,     0,   971,   972,   973,   974,   975,
     976,   977,   978,   979,     0,   980,     0,   981,     0,     0,
       0,     0,     0,   983,   984,   985,   986,   987,   988,   989,
       0,     0,     0,     0,   992,   993,     0,     0,     0,   994,
     995,   996,   997,   998,   999,  1073,  1074,  1075,  1076,  1077,
    1078,  1079,  1080,  1081,  1082,  1083,  1084,  1085,  1086,  1087,
    1088,  1089,  1090,  1307,     0,   951,   952,   953,   954,   955,
       0,     0,     0,     0,   960,   961,   962,     0,     0,     0,
       0,     0,     0,     0,   963,   964,   965,   966,   967,   968,
     969,   970,     0,   971,   972,   973,   974,   975,   976,   977,
     978,   979,     0,   980,     0,   981,     0,     0,     0,     0,
       0,   983,   984,   985,   986,   987,   988,   989,     0,     0,
       0,     0,   992,   993,     0,     0,     0,   994,   995,   996,
     997,   998,   999,  1073,  1074,  1075,  1076,  1077,  1078,  1079,
    1080,  1081,  1082,  1083,  1084,  1085,  1086,  1087,  1088,  1089,
    1090,  1341,     0,   951,   952,   953,   954,   955,     0,     0,
       0,     0,   960,   961,   962,     0,     0,     0,     0,     0,
       0,     0,   963,   964,   965,   966,   967,   968,   969,   970,
       0,   971,   972,   973,   974,   975,   976,   977,   978,   979,
       0,   980,     0,   981,     0,     0,     0,     0,     0,   983,
     984,   985,   986,   987,   988,   989,     0,     0,     0,     0,
     992,   993,     0,     0,     0,   994,   995,   996,   997,   998,
     999,  1073,  1074,  1075,  1076,  1077,  1078,  1079,  1080,  1081,
    1082,  1083,  1084,  1085,  1086,  1087,  1088,  1089,  1090,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,  1000,  1091,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,  1092,
       0,     0,     0,  1093,     0,  1094,  1095,  1096,  1097,     0,
    1098,  1099,  1100,   535,  1001,     0,  1101,     0,  1002,  1003,
       0,     0,     0,     0,  1164,  1103,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,  1000,  1091,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,  1092,     0,     0,
       0,  1093,     0,  1094,  1095,  1096,  1097,     0,  1098,  1099,
    1100,   535,  1001,     0,  1101,     0,  1002,  1003,     0,     0,
       0,     0,  1164,  1103,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1000,  1091,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,  1092,     0,     0,     0,  1093,
       0,  1094,  1095,  1096,  1097,     0,  1098,  1099,  1100,   535,
    1342,     0,  1101,     0,  1002,  1003,     0,     0,     0,     0,
    1164,  1103,  1285,     0,   951,   952,   953,   954,   955,     0,
       0,     0,     0,   960,   961,   962,     0,     0,     0,     0,
       0,     0,     0,   963,   964,   965,   966,   967,   968,   969,
     970,     0,   971,   972,   973,   974,   975,   976,   977,   978,
     979,     0,   980,     0,   981,     0,     0,     0,     0,     0,
     983,   984,   985,   986,   987,   988,   989,     0,     0,     0,
       0,   992,   993,     0,     0,     0,   994,   995,   996,   997,
     998,   999,  1073,  1074,  1075,  1076,  1077,  1078,  1079,  1080,
    1081,  1082,  1083,  1084,  1085,  1086,  1087,  1088,  1089,  1090,
    1480,     0,   951,   952,   953,   954,   955,     0,     0,     0,
       0,   960,   961,   962,     0,     0,     0,     0,     0,     0,
       0,   963,   964,   965,   966,   967,   968,   969,   970,     0,
     971,   972,   973,   974,   975,   976,   977,   978,   979,     0,
     980,     0,   981,     0,     0,     0,     0,     0,   983,   984,
     985,   986,   987,   988,   989,     0,     0,     0,     0,   992,
     993,     0,     0,     0,   994,   995,   996,   997,   998,   999,
    1073,  1074,  1075,  1076,  1077,  1078,  1079,  1080,  1081,  1082,
    1083,  1084,  1085,  1086,  1087,  1088,  1089,  1090,  1502,     0,
     951,   952,   953,   954,   955,     0,     0,     0,     0,   960,
     961,   962,     0,     0,     0,     0,     0,     0,     0,   963,
     964,   965,   966,   967,   968,   969,   970,     0,   971,   972,
     973,   974,   975,   976,   977,   978,   979,     0,   980,     0,
     981,     0,     0,     0,     0,     0,   983,   984,   985,   986,
     987,   988,   989,     0,     0,     0,     0,   992,   993,     0,
       0,     0,   994,   995,   996,   997,   998,   999,  1073,  1074,
    1075,  1076,  1077,  1078,  1079,  1080,  1081,  1082,  1083,  1084,
    1085,  1086,  1087,  1088,  1089,  1090,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,  1000,  1091,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,  1092,     0,     0,     0,
    1093,     0,  1094,  1095,  1096,  1097,     0,  1098,  1099,  1100,
     535,  1001,     0,  1101,     0,  1002,  1003,     0,     0,     0,
       0,  1164,  1103,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,  1000,
    1091,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,  1092,     0,     0,     0,  1093,     0,
    1094,  1095,  1096,  1097,     0,  1098,  1099,  1100,   535,  1481,
       0,  1101,     0,  1002,  1003,     0,     0,     0,     0,  1164,
    1103,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,  1000,  1091,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,  1092,     0,     0,     0,  1093,     0,  1094,  1095,
    1096,  1097,     0,  1098,  1099,  1100,   535,  1001,     0,  1101,
       0,  1002,  1003,     0,     0,     0,     0,  1164,  1103,  1504,
       0,   951,   952,   953,   954,   955,     0,     0,     0,     0,
     960,   961,   962,     0,     0,     0,     0,     0,     0,     0,
     963,   964,   965,   966,   967,   968,   969,   970,     0,   971,
     972,   973,   974,   975,   976,   977,   978,   979,     0,   980,
       0,   981,     0,     0,     0,     0,     0,   983,   984,   985,
     986,   987,   988,   989,     0,     0,     0,     0,   992,   993,
       0,     0,     0,   994,   995,   996,   997,   998,   999,  1073,
    1074,  1075,  1076,  1077,  1078,  1079,  1080,  1081,  1082,  1083,
    1084,  1085,  1086,  1087,  1088,  1089,  1090,  1506,     0,   951,
     952,   953,   954,   955,     0,     0,     0,     0,   960,   961,
     962,     0,     0,     0,     0,     0,     0,     0,   963,   964,
     965,   966,   967,   968,   969,   970,     0,   971,   972,   973,
     974,   975,   976,   977,   978,   979,     0,   980,     0,   981,
       0,     0,     0,     0,     0,   983,   984,   985,   986,   987,
     988,   989,     0,     0,     0,     0,   992,   993,     0,     0,
       0,   994,   995,   996,   997,   998,   999,  1073,  1074,  1075,
    1076,  1077,  1078,  1079,  1080,  1081,  1082,  1083,  1084,  1085,
    1086,  1087,  1088,  1089,  1090,  1513,     0,   951,   952,   953,
     954,   955,     0,     0,     0,     0,   960,   961,   962,     0,
       0,     0,     0,     0,     0,     0,   963,   964,   965,   966,
     967,   968,   969,   970,     0,   971,   972,   973,   974,   975,
     976,   977,   978,   979,     0,   980,     0,   981,     0,     0,
       0,     0,     0,   983,   984,   985,   986,   987,   988,   989,
       0,     0,     0,     0,   992,   993,     0,     0,     0,   994,
     995,   996,   997,   998,   999,  1073,  1074,  1075,  1076,  1077,
    1078,  1079,  1080,  1081,  1082,  1083,  1084,  1085,  1086,  1087,
    1088,  1514,  1090,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,  1000,  1091,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,  1092,     0,     0,     0,  1093,     0,  1094,
    1095,  1096,  1097,     0,  1098,  1099,  1100,   535,  1001,     0,
    1101,     0,  1002,  1003,     0,     0,     0,     0,  1164,  1103,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,  1000,  1091,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,  1092,     0,     0,     0,  1093,     0,  1094,  1095,  1096,
    1097,     0,  1098,  1099,  1100,   535,  1001,     0,  1101,     0,
    1002,  1003,     0,     0,     0,     0,  1164,  1103,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,  1000,  1091,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,  1092,
       0,     0,     0,  1093,     0,  1094,  1095,  1096,  1097,     0,
    1098,  1099,  1100,   535,  1001,     0,  1101,     0,  1002,  1003,
       0,     0,     0,     0,  1164,  1103,  1516,     0,   951,   952,
     953,   954,   955,     0,     0,     0,     0,   960,   961,   962,
       0,     0,     0,     0,     0,     0,     0,   963,   964,   965,
     966,   967,   968,   969,   970,     0,   971,   972,   973,   974,
     975,   976,   977,   978,   979,     0,   980,     0,   981,     0,
       0,     0,     0,     0,   983,   984,   985,   986,   987,   988,
     989,     0,     0,     0,     0,   992,   993,     0,     0,     0,
     994,   995,   996,   997,   998,   999,  1073,  1074,  1075,  1076,
    1077,  1078,  1079,  1080,  1081,  1082,  1083,  1084,  1085,  1086,
    1087,  1088,  1089,  1090,  1518,     0,   951,   952,   953,   954,
     955,     0,     0,     0,     0,   960,   961,   962,     0,     0,
       0,     0,     0,     0,     0,   963,   964,   965,   966,   967,
     968,   969,   970,     0,   971,   972,   973,   974,   975,   976,
     977,   978,   979,     0,   980,     0,   981,     0,     0,     0,
       0,     0,   983,   984,   985,   986,   987,   988,   989,     0,
       0,     0,     0,   992,   993,     0,     0,     0,   994,   995,
     996,   997,   998,   999,  1073,  1074,  1075,  1076,  1077,  1078,
    1079,  1080,  1081,  1082,  1083,  1084,  1085,  1086,  1087,  1088,
    1089,  1090,  1529,     0,   951,   952,   953,   954,   955,     0,
       0,     0,     0,   960,   961,   962,     0,     0,     0,     0,
       0,     0,     0,   963,   964,   965,   966,   967,   968,   969,
     970,     0,   971,   972,   973,   974,   975,   976,   977,   978,
     979,     0,   980,     0,   981,     0,     0,     0,     0,     0,
     983,   984,   985,   986,   987,   988,   989,     0,     0,     0,
       0,   992,   993,     0,     0,     0,   994,   995,   996,   997,
     998,   999,  1073,  1074,  1075,  1076,  1077,  1078,  1079,  1080,
    1081,  1082,  1083,  1084,  1085,  1086,  1087,  1088,  1089,  1090,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,  1000,  1091,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1092,     0,     0,     0,  1093,     0,  1094,  1095,  1096,  1097,
       0,  1098,  1099,  1100,   535,  1001,     0,  1101,     0,  1002,
    1003,     0,     0,     0,     0,  1164,  1103,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,  1000,  1091,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,  1092,     0,
       0,     0,  1093,     0,  1094,  1095,  1096,  1097,     0,  1098,
    1099,  1100,   535,  1001,     0,  1101,     0,  1002,  1003,     0,
       0,     0,     0,  1164,  1103,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,  1000,  1091,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,  1092,     0,     0,     0,
    1093,     0,  1094,  1095,  1096,  1097,     0,  1098,  1099,  1100,
     535,  1001,     0,  1101,     0,  1002,  1003,     0,     0,     0,
       0,  1164,  1103,  1531,     0,   951,   952,   953,   954,   955,
       0,     0,     0,     0,   960,   961,   962,     0,     0,     0,
       0,     0,     0,     0,   963,   964,   965,   966,   967,   968,
     969,   970,     0,   971,   972,   973,   974,   975,   976,   977,
     978,   979,     0,   980,     0,   981,     0,     0,     0,     0,
       0,   983,   984,   985,   986,   987,   988,   989,     0,     0,
       0,     0,   992,   993,     0,     0,     0,   994,   995,   996,
     997,   998,   999,  1073,  1074,  1075,  1076,  1077,  1078,  1079,
    1080,  1081,  1082,  1083,  1084,  1085,  1086,  1087,  1088,  1089,
    1090,  1533,     0,   951,   952,   953,   954,   955,     0,     0,
       0,     0,   960,   961,   962,     0,     0,     0,     0,     0,
       0,     0,   963,   964,   965,   966,   967,   968,   969,   970,
       0,   971,   972,   973,   974,   975,   976,   977,   978,   979,
       0,   980,     0,   981,     0,     0,     0,     0,     0,   983,
     984,   985,   986,   987,   988,   989,     0,     0,     0,     0,
     992,   993,     0,     0,     0,   994,   995,   996,   997,   998,
     999,  1073,  1074,  1075,  1076,  1077,  1078,  1079,  1080,  1081,
    1082,  1083,  1084,  1085,  1086,  1087,  1088,  1089,  1090,  1535,
       0,   951,   952,   953,   954,   955,     0,     0,     0,     0,
     960,   961,   962,     0,     0,     0,     0,     0,     0,     0,
     963,   964,   965,   966,   967,   968,   969,   970,     0,   971,
     972,   973,   974,   975,   976,   977,   978,   979,     0,   980,
       0,   981,     0,     0,     0,     0,     0,   983,   984,   985,
     986,   987,   988,   989,     0,     0,     0,     0,   992,   993,
       0,     0,     0,   994,   995,   996,   997,   998,   999,  1073,
    1074,  1075,  1076,  1077,  1078,  1079,  1080,  1081,  1082,  1083,
    1084,  1085,  1086,  1087,  1088,  1089,  1090,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,  1000,  1091,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,  1092,     0,     0,
       0,  1093,     0,  1094,  1095,  1096,  1097,     0,  1098,  1099,
    1100,   535,  1001,     0,  1101,     0,  1002,  1003,     0,     0,
       0,     0,  1164,  1103,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1000,  1091,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,  1092,     0,     0,     0,  1093,
       0,  1094,  1095,  1096,  1097,     0,  1098,  1099,  1100,   535,
    1001,     0,  1101,     0,  1002,  1003,     0,     0,     0,     0,
    1164,  1103,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,  1000,  1091,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,  1092,     0,     0,     0,  1093,     0,  1094,
    1095,  1096,  1097,     0,  1098,  1099,  1100,   535,  1001,     0,
    1101,     0,  1002,  1003,     0,     0,     0,     0,  1164,  1103,
    1540,     0,   951,   952,   953,   954,   955,     0,     0,     0,
       0,   960,   961,   962,     0,     0,     0,     0,     0,     0,
       0,   963,   964,   965,   966,   967,   968,   969,   970,     0,
     971,   972,   973,   974,   975,   976,   977,   978,   979,     0,
     980,     0,   981,     0,     0,     0,     0,     0,   983,   984,
     985,   986,   987,   988,   989,     0,     0,     0,     0,   992,
     993,     0,     0,     0,   994,   995,   996,   997,   998,   999,
    1073,  1074,  1075,  1076,  1077,  1078,  1079,  1080,  1081,  1082,
    1083,  1084,  1085,  1086,  1087,  1088,  1089,  1090,  1542,     0,
     951,   952,   953,   954,   955,     0,     0,     0,     0,   960,
     961,   962,     0,     0,     0,     0,     0,     0,     0,   963,
     964,   965,   966,   967,   968,   969,   970,     0,   971,   972,
     973,   974,   975,   976,   977,   978,   979,     0,   980,     0,
     981,     0,     0,     0,     0,     0,   983,   984,   985,   986,
     987,   988,   989,     0,     0,     0,     0,   992,   993,     0,
       0,     0,   994,   995,   996,   997,   998,   999,  1073,  1074,
    1075,  1076,  1077,  1078,  1079,  1080,  1081,  1082,  1083,  1084,
    1085,  1086,  1087,  1088,  1089,  1090,  1544,     0,   951,   952,
     953,   954,   955,     0,     0,     0,     0,   960,   961,   962,
       0,     0,     0,     0,     0,     0,     0,   963,   964,   965,
     966,   967,   968,   969,   970,     0,   971,   972,   973,   974,
     975,   976,   977,   978,   979,     0,   980,     0,   981,     0,
       0,     0,     0,     0,   983,   984,   985,   986,   987,   988,
     989,     0,     0,     0,     0,   992,   993,     0,     0,     0,
     994,   995,   996,   997,   998,   999,  1073,  1074,  1075,  1076,
    1077,  1078,  1079,  1080,  1081,  1082,  1083,  1084,  1085,  1086,
    1087,  1088,  1089,  1090,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,  1000,
    1091,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,  1092,     0,     0,     0,  1093,     0,
    1094,  1095,  1096,  1097,     0,  1098,  1099,  1100,   535,  1001,
       0,  1101,     0,  1002,  1003,     0,     0,     0,     0,  1164,
    1103,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,  1000,  1091,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,  1092,     0,     0,     0,  1093,     0,  1094,  1095,
    1096,  1097,     0,  1098,  1099,  1100,   535,  1001,     0,  1101,
       0,  1002,  1003,     0,     0,     0,     0,  1164,  1103,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,  1000,  1091,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1092,     0,     0,     0,  1093,     0,  1094,  1095,  1096,  1097,
       0,  1098,  1099,  1100,   535,  1001,     0,  1101,     0,  1002,
    1003,     0,     0,     0,     0,  1164,  1103,  1546,     0,   951,
     952,   953,   954,   955,     0,     0,     0,     0,   960,   961,
     962,     0,     0,     0,     0,     0,     0,     0,   963,   964,
     965,   966,   967,   968,   969,   970,     0,   971,   972,   973,
     974,   975,   976,   977,   978,   979,     0,   980,     0,   981,
       0,     0,     0,     0,     0,   983,   984,   985,   986,   987,
     988,   989,     0,     0,     0,     0,   992,   993,     0,     0,
       0,   994,   995,   996,   997,   998,   999,  1073,  1074,  1075,
    1076,  1077,  1078,  1079,  1080,  1081,  1082,  1083,  1084,  1085,
    1086,  1087,  1088,  1089,  1090,  1548,     0,   951,   952,   953,
     954,   955,     0,     0,     0,     0,   960,   961,   962,     0,
       0,     0,     0,     0,     0,     0,   963,   964,   965,   966,
     967,   968,   969,   970,     0,   971,   972,   973,   974,   975,
     976,   977,   978,   979,     0,   980,     0,   981,     0,     0,
       0,     0,     0,   983,   984,   985,   986,   987,   988,   989,
       0,     0,     0,     0,   992,   993,     0,     0,     0,   994,
     995,   996,   997,   998,   999,  1073,  1074,  1075,  1076,  1077,
    1078,  1079,  1080,  1081,  1082,  1083,  1084,  1085,  1086,  1087,
    1088,  1089,  1090,  1550,     0,   951,   952,   953,   954,   955,
       0,     0,     0,     0,   960,   961,   962,     0,     0,     0,
       0,     0,     0,     0,   963,   964,   965,   966,   967,   968,
     969,   970,     0,   971,   972,   973,   974,   975,   976,   977,
     978,   979,     0,   980,     0,   981,     0,     0,     0,     0,
       0,   983,   984,   985,   986,   987,   988,   989,     0,     0,
       0,     0,   992,   993,     0,     0,     0,   994,   995,   996,
     997,   998,   999,  1073,  1074,  1075,  1076,  1077,  1078,  1079,
    1080,  1081,  1082,  1083,  1084,  1085,  1086,  1087,  1088,  1089,
    1090,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,  1000,  1091,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,  1092,     0,     0,     0,  1093,     0,  1094,  1095,  1096,
    1097,     0,  1098,  1099,  1100,   535,  1001,     0,  1101,     0,
    1002,  1003,     0,     0,     0,     0,  1164,  1103,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,  1000,  1091,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,  1092,
       0,     0,     0,  1093,     0,  1094,  1095,  1096,  1097,     0,
    1098,  1099,  1100,   535,  1001,     0,  1101,     0,  1002,  1003,
       0,     0,     0,     0,  1164,  1103,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,  1000,  1091,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,  1092,     0,     0,
       0,  1093,     0,  1094,  1095,  1096,  1097,     0,  1098,  1099,
    1100,   535,  1001,     0,  1101,     0,  1002,  1003,     0,     0,
       0,     0,  1164,  1103,  1552,     0,   951,   952,   953,   954,
     955,     0,     0,     0,     0,   960,   961,   962,     0,     0,
       0,     0,     0,     0,     0,   963,   964,   965,   966,   967,
     968,   969,   970,     0,   971,   972,   973,   974,   975,   976,
     977,   978,   979,     0,   980,     0,   981,     0,     0,     0,
       0,     0,   983,   984,   985,   986,   987,   988,   989,     0,
       0,     0,     0,   992,   993,     0,     0,     0,   994,   995,
     996,   997,   998,   999,  1073,  1074,  1075,  1076,  1077,  1078,
    1079,  1080,  1081,  1082,  1083,  1084,  1085,  1086,  1087,  1088,
    1089,  1090,  1746,     0,   951,   952,   953,   954,   955,     0,
       0,     0,     0,   960,   961,   962,     0,     0,     0,     0,
       0,     0,     0,   963,   964,   965,   966,   967,   968,   969,
     970,     0,   971,   972,   973,   974,   975,   976,   977,   978,
     979,     0,   980,     0,   981,     0,     0,     0,     0,     0,
     983,   984,   985,   986,   987,   988,   989,     0,     0,     0,
       0,   992,   993,     0,     0,     0,   994,   995,   996,   997,
     998,   999,  1073,  1074,  1075,  1076,  1077,  1078,  1079,  1080,
    1081,  1082,  1083,  1084,  1085,  1086,  1087,  1088,  1089,  1090,
     951,   952,   953,   954,   955,     0,     0,     0,     0,   960,
     961,   962,     0,     0,     0,     0,     0,     0,     0,   963,
     964,   965,   966,   967,   968,   969,   970,     0,   971,   972,
     973,   974,   975,   976,   977,   978,   979,     0,   980,     0,
     981,     0,     0,     0,     0,     0,   983,   984,   985,   986,
     987,   988,   989,     0,     0,     0,     0,   992,   993,     0,
       0,     0,   994,   995,   996,   997,   998,   999,  1073,  1074,
    1075,  1076,  1077,  1078,  1079,  1080,  1081,  1082,  1083,  1084,
    1085,  1086,  1087,  1088,  1089,  1090,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,  1000,  1091,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,  1092,     0,
       0,     0,  1093,     0,  1094,  1095,  1096,  1097,     0,  1098,
    1099,  1100,   535,  1001,     0,  1101,     0,  1002,  1003,     0,
       0,     0,     0,  1164,  1103,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,  1000,  1091,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,  1092,     0,     0,     0,
    1093,     0,  1094,  1095,  1096,  1097,     0,  1098,  1099,  1100,
     535,  1001,     0,  1101,     0,  1002,  1003,     0,     0,     0,
       0,  1164,  1103,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,  1000,  1091,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,  1092,     0,     0,     0,  1093,     0,  1094,  1095,
    1096,  1097,     0,  1098,  1099,  1100,   535,  1001,     0,  1101,
       0,  1002,  1003,     0,     0,     0,     0,  1102,  1103,   951,
     952,   953,   954,   955,     0,     0,     0,     0,   960,   961,
     962,     0,     0,     0,     0,     0,     0,     0,   963,   964,
     965,   966,   967,   968,   969,   970,     0,   971,   972,   973,
     974,   975,   976,   977,   978,   979,     0,   980,     0,   981,
       0,     0,     0,     0,     0,   983,   984,   985,   986,   987,
     988,   989,     0,     0,     0,     0,   992,   993,     0,     0,
       0,   994,   995,   996,   997,   998,   999,  1073,  1074,  1075,
    1076,  1077,  1078,  1079,  1080,  1081,  1082,  1083,  1084,  1085,
    1086,  1087,  1088,  1089,  1090,   951,   952,   953,   954,   955,
       0,     0,     0,     0,   960,   961,   962,     0,     0,     0,
       0,     0,     0,     0,   963,   964,   965,   966,   967,   968,
     969,   970,     0,   971,   972,   973,   974,   975,   976,   977,
     978,   979,     0,   980,     0,   981,     0,     0,     0,     0,
       0,   983,   984,   985,   986,   987,   988,   989,     0,     0,
       0,     0,   992,   993,     0,     0,     0,   994,   995,   996,
     997,   998,   999,  1073,  1074,  1075,  1076,  1077,  1078,  1079,
    1080,  1081,  1082,  1083,  1084,  1085,  1086,  1087,  1088,  1089,
    1090,   951,   952,   953,   954,   955,     0,     0,     0,     0,
     960,   961,   962,     0,     0,     0,     0,     0,     0,     0,
     963,   964,   965,   966,   967,   968,   969,   970,     0,   971,
     972,   973,   974,   975,   976,   977,   978,   979,     0,   980,
       0,   981,     0,     0,     0,     0,     0,   983,   984,   985,
     986,   987,   988,   989,     0,     0,     0,     0,   992,   993,
       0,     0,     0,   994,   995,   996,   997,   998,   999,  1073,
    1074,  1075,  1076,  1077,  1078,  1079,  1080,  1081,  1082,  1083,
    1084,  1085,  1086,  1087,  1088,  1089,  1090,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,  1000,  1091,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,  1092,     0,     0,     0,  1093,     0,  1094,  1095,  1096,
    1097,     0,  1098,  1099,  1100,   535,  1001,     0,  1101,     0,
    1002,  1003,     0,     0,     0,     0,  1123,  1103,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,  1000,  1091,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,  1092,     0,     0,
       0,  1093,     0,  1094,  1095,  1096,  1097,     0,  1098,  1099,
    1100,   535,  1001,     0,  1101,     0,  1002,  1003,     0,     0,
       0,     0,  1125,  1103,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,  1000,  1091,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,  1092,     0,     0,     0,  1093,     0,  1094,
    1095,  1096,  1097,     0,  1098,  1099,  1100,   535,  1001,     0,
    1101,     0,  1002,  1003,     0,     0,     0,     0,  1164,  1103,
     951,   952,   953,   954,   955,   956,   957,   958,   959,   960,
     961,   962,     0,     0,     0,     0,     0,     0,     0,   963,
     964,   965,   966,   967,   968,   969,   970,     0,   971,   972,
     973,   974,   975,   976,   977,   978,   979,     0,   980,     0,
     981,     0,     0,     0,   982,     0,   983,   984,   985,   986,
     987,   988,   989,   990,     0,     0,   991,   992,   993,     0,
       0,     0,   994,   995,   996,   997,   998,   999,   951,   952,
     953,   954,   955,     0,     0,     0,     0,   960,   961,   962,
       0,     0,     0,     0,     0,     0,     0,   963,   964,   965,
     966,   967,   968,   969,   970,     0,   971,   972,   973,   974,
     975,   976,   977,   978,   979,     0,   980,     0,   981,     0,
       0,     0,     0,     0,   983,   984,   985,   986,   987,   988,
     989,     0,     0,     0,     0,   992,   993,     0,     0,     0,
     994,   995,   996,   997,   998,   999,  1073,  1074,  1075,  1076,
    1077,  1078,  1079,  1080,  1081,  1082,  1083,  1084,  1085,  1086,
    1087,  1088,  1089,  1090,   951,   952,   953,   954,   955,   956,
     957,   958,   959,   960,   961,   962,     0,     0,     0,     0,
       0,     0,     0,   963,   964,   965,   966,   967,   968,   969,
     970,     0,   971,   972,   973,   974,   975,   976,   977,   978,
     979,     0,   980,     0,   981,     0,     0,     0,   982,     0,
     983,   984,   985,   986,   987,   988,   989,   990,     0,     0,
     991,   992,   993,     0,     0,     0,   994,   995,   996,   997,
     998,   999,  1293,     0,   951,   952,   953,   954,   955,   956,
     957,   958,   959,   960,   961,   962,     0,     0,     0,     0,
       0,     0,     0,   963,   964,   965,   966,   967,   968,   969,
     970,     0,   971,   972,   973,   974,   975,   976,   977,   978,
     979,     0,   980,     0,   981,     0,     0,     0,   982,     0,
     983,   984,   985,   986,   987,   988,   989,   990,     0,     0,
     991,   992,   993,     0,     0,     0,   994,   995,   996,   997,
     998,   999,     0,     0,     0,     0,     0,  1000,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,  1309,  1310,  1311,  1312,  1313,  1314,  1315,
    1316,  1317,  1318,  1319,  1320,  1321,  1322,  1323,  1324,  1325,
    1326,  1327,  1328,  1329,  1330,  1331,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,  1001,     0,     0,
       0,  1002,  1003,     0,     0,  1004,     0,     0,  1378,     0,
       0,     0,     0,     0,     0,  1000,  1091,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1092,     0,     0,     0,  1093,     0,  1094,  1095,  1096,  1097,
       0,  1098,  1099,  1100,  1694,  1001,     0,  1101,     0,  1002,
    1003,     0,     0,     0,     0,  1164,  1103,     0,     0,     0,
       0,     0,     0,   951,   952,   953,   954,   955,   956,   957,
     958,   959,   960,   961,   962,     0,     0,     0,     0,     0,
       0,  1000,   963,   964,   965,   966,   967,   968,   969,   970,
       0,   971,   972,   973,   974,   975,   976,   977,   978,   979,
       0,   980,     0,   981,     0,     0,     0,   982,     0,   983,
     984,   985,   986,   987,   988,   989,   990,     0,     0,   991,
     992,   993,     0,     0,     0,   994,   995,   996,   997,   998,
     999,  1001,     0,     0,     0,  1002,  1003,     0,     0,  1004,
       0,     0,  1378,     0,     0,     0,     0,     0,     0,     0,
       0,  1000,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,  1001,     0,     0,     0,  1002,  1003,     0,     0,  1004,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1000,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1001,     0,     0,     0,  1002,  1003,     0,     0,  1004
};

static const yytype_int16 yycheck[] =
{
     235,   203,   431,   238,   234,   909,  1178,     1,   912,     1,
     253,   915,     1,  1230,   918,     1,     1,  1113,   912,     1,
       1,   915,   926,     1,   918,  1006,    63,     1,   315,   264,
      58,   266,   926,   268,  1085,   270,  1087,  1064,  1089,  1066,
       1,  1068,  1023,  1070,  1025,  1072,  1027,   336,   909,     1,
    1031,   912,     1,     1,   915,     1,  1107,   918,  1105,     1,
     349,     1,  1109,   111,     1,   926,   315,     1,    57,    58,
     315,     1,  1066,     1,  1068,   335,  1070,   345,  1072,   349,
       1,     1,   352,   315,     1,     1,     1,     1,     1,   349,
       1,     1,     1,     1,   315,   363,   331,    89,    90,    91,
      92,    62,  1006,     1,     1,     1,     1,   342,   343,   344,
     345,   346,   347,   348,   349,   350,    62,     1,     1,  1023,
     315,  1025,     1,  1027,     1,   315,   335,  1031,   315,     1,
       1,     1,   335,   315,     1,     1,   345,    89,    90,    91,
      92,     1,   345,   315,     1,  1006,   575,     1,   383,   384,
     385,     1,   315,     1,   909,     1,   350,   912,   352,     1,
     915,     1,  1023,   918,  1025,   335,  1027,     1,   938,   939,
    1031,   926,     1,    63,    89,    90,    91,    92,     1,   349,
     315,     1,     1,     1,  1165,     1,     1,     1,     1,     1,
       1,    62,     1,   357,   364,   359,   335,  1178,  1102,  1103,
     315,     1,     1,   349,   350,   315,   352,     1,    62,  1103,
     349,     1,   315,   352,    62,   354,     1,     1,     1,  1123,
     315,  1125,   335,     1,     1,   315,     1,     1,    14,    15,
       1,   466,   110,   111,   469,   470,   349,     1,   315,   352,
       1,  1102,  1103,     1,   315,   315,     1,     1,     1,     1,
     315,  1006,     1,     1,     1,   357,     1,   359,   345,     1,
    1164,  1165,  1123,     1,  1125,   315,     1,     1,  1023,     1,
    1025,     1,  1027,     1,  1178,     1,  1031,     1,  1305,     1,
       1,     1,     1,     1,     1,     1,     1,    16,     1,     1,
       1,     1,   349,   350,   315,   352,     1,     1,     1,   315,
       1,     1,     1,  1164,  1165,     1,     1,     1,     1,  1213,
     315,  1305,   349,  1294,     1,  1411,     1,  1178,   366,   315,
       1,   349,   350,  1227,     1,   234,   235,   236,   237,     0,
      19,  1235,     1,  1227,    20,   315,     1,   580,   315,   315,
       1,  1235,     1,   315,   336,     1,     1,  1102,  1103,     1,
     315,     1,  1213,     1,    21,   349,     1,   349,   350,   351,
     352,   353,     1,   349,     1,   359,  1227,   353,  1123,   909,
    1125,   363,   912,   362,  1235,   915,   361,   363,   918,  1596,
     361,   363,   363,   361,   336,   363,   926,   361,   349,   350,
    1294,   352,   353,     1,   315,     1,     1,   349,   350,   351,
     352,   353,   363,   349,   350,   353,   352,   353,   360,  1164,
    1165,   363,   361,   359,   363,   363,   315,   363,  1590,   361,
     360,   336,   909,  1178,   361,   912,   363,   361,   915,   363,
     360,   918,   360,  1294,   349,   350,   351,   352,   353,   926,
     360,  1422,   359,   360,   360,   360,   360,   360,   363,   360,
     360,  1432,   360,   349,   350,   351,   352,   353,     1,   349,
       1,   358,   360,  1514,     1,   360,  1006,   363,     1,   315,
    1521,   350,  1227,   352,  1378,   352,   360,   360,   349,   350,
    1235,   352,   353,  1023,  1378,  1025,   315,  1027,   360,     1,
     360,  1031,   363,   360,   360,   349,   350,   361,   352,   353,
     360,   349,   350,   360,   352,   353,   352,   936,   350,   363,
     360,  1415,  1416,  1417,  1418,   363,   315,  1378,  1422,  1006,
     360,  1415,  1416,  1417,  1418,   300,   360,  1744,  1432,   349,
     350,   351,   352,   353,   350,     1,  1023,   360,  1025,  1294,
    1027,   360,   360,   363,  1031,   360,   360,   360,   360,   360,
     335,   360,   352,   352,  1415,  1416,  1417,  1418,   352,   349,
     350,  1422,  1102,  1103,   349,     1,   350,   350,   352,   352,
       1,  1432,   350,   350,   359,   352,   350,   352,   352,   350,
     355,   352,     1,  1123,   909,  1125,   350,   912,   352,   350,
     915,   352,   350,   918,   352,   349,   349,   352,   352,   352,
     352,   926,   350,   352,   352,   352,  1035,   352,  1589,  1590,
     352,     1,     1,     1,   352,     1,  1103,   352,   352,     1,
     352,   349,   352,  1378,  1164,  1165,   352,     1,   352,     1,
     352,   352,   352,   352,   352,   352,   352,   352,  1178,   352,
     352,   352,   352,  1624,  1625,  1626,  1627,   352,   352,   352,
    1677,   352,   352,   352,     1,   315,   352,   352,   352,   352,
    1415,  1416,  1417,  1418,   349,   352,   335,  1422,   349,   350,
     351,   336,   349,   350,   351,   336,   335,  1432,  1165,   335,
     349,  1006,     1,   335,   349,  1589,  1590,  1227,   349,   315,
     349,  1178,     1,   349,   349,  1235,   335,   349,  1023,   349,
    1025,   349,  1027,   905,   349,     1,  1031,     1,     1,     1,
     349,     1,   349,     1,     1,     1,     1,     1,     1,     1,
    1624,  1625,  1626,  1627,     1,     1,  1213,   335,  1589,  1590,
     335,     1,     1,     1,     1,     1,   315,     1,  1167,   315,
    1227,   349,  1171,   349,   349,   315,     1,     1,  1235,    63,
       1,     1,     1,     1,  1294,     1,     1,     1,     1,    63,
       1,     1,     1,  1624,  1625,  1626,  1627,     1,  1749,     1,
       1,     1,     1,     1,     1,     1,     1,     1,  1103,  1760,
       1,     1,     1,  1764,     1,  1766,  1767,  1691,     1,    63,
     349,   350,   335,   352,   335,   315,     1,  1691,   335,     1,
       1,     1,   335,   349,     1,     1,   349,  1294,   349,     1,
       1,     1,   349,     1,     1,     1,   349,     1,     1,     1,
       1,     1,     1,   335,     1,     1,     1,     1,     1,     1,
    1691,     1,     1,     1,  1589,  1590,     1,   349,  1378,     1,
    1165,  1745,     1,     1,  1748,  1749,     1,     1,     1,     1,
       1,  1745,     1,  1178,  1748,     1,  1760,  1761,  1762,     1,
    1764,   315,  1766,  1767,     1,     1,     1,  1761,  1762,  1624,
    1625,  1626,  1627,   315,     1,  1415,  1416,  1417,  1418,     1,
       1,   315,  1422,   349,  1745,     1,   315,  1748,  1749,   315,
       1,  1378,  1432,   336,   337,   338,   315,     1,   335,  1760,
    1761,  1762,  1227,  1764,   335,  1766,  1767,     1,   345,     1,
    1235,   315,   315,   349,  1149,   315,   315,     1,   349,     1,
     357,   315,   359,   315,   349,   350,     1,   352,  1415,  1416,
    1417,  1418,     1,  1163,   335,  1422,  1691,     1,     1,    57,
      58,  1171,   357,     1,   359,  1432,   335,   335,   349,   335,
     315,   352,     1,   335,     1,     1,     1,     1,     1,   349,
     349,   349,     1,   349,     1,   323,   324,   349,   315,  1294,
     328,   329,   315,     1,     1,   349,   315,   349,    89,    90,
      91,    92,  1184,     1,  1186,   315,  1188,   315,   315,     1,
    1745,   315,   315,  1748,  1749,     1,   349,   315,  1233,  1234,
       1,     1,   956,   957,   958,  1760,  1761,  1762,     1,  1764,
       1,  1766,  1767,     1,   315,   315,   335,     1,     1,   315,
      89,    90,    91,    92,     1,     1,     1,     1,   982,     1,
     349,     1,   349,   349,   907,   349,   990,   991,   911,   349,
     349,   914,   315,   315,   917,   349,   357,   349,   359,  1589,
    1590,   315,   357,  1378,   359,   349,   349,   349,   357,   349,
     359,   349,   349,   349,   349,   349,   349,   349,   357,   315,
     359,   349,   349,   349,   349,   349,   357,   315,   359,   349,
     349,   349,   349,   349,  1624,  1625,  1626,  1627,   349,   349,
    1415,  1416,  1417,  1418,   349,   349,   349,  1422,   349,   349,
     349,   349,  1589,  1590,   349,   349,   349,  1432,   349,   349,
     349,   315,   349,   349,   349,   349,   315,   349,   349,   349,
     349,   349,   349,   349,   349,   349,   315,   349,   349,   349,
     349,   349,   349,   315,   315,   349,   349,  1624,  1625,  1626,
    1627,  1095,  1096,  1097,   349,   352,   352,   349,   349,   349,
     366,  1691,   349,   349,   357,   315,   359,   349,   349,   349,
     353,   349,   349,   349,   349,   349,   349,  1121,  1597,   349,
     349,   315,   349,   349,   349,   349,   349,   349,  1132,   349,
     349,   349,   315,   315,   349,   315,   315,   349,   315,   315,
     349,   349,   315,   315,   349,   349,   349,   349,   349,   315,
     349,   315,   315,   349,  1691,  1745,   315,   349,  1748,  1749,
     315,   315,   349,   349,   349,   334,   335,   336,   337,   338,
    1760,  1761,  1762,   315,  1764,   336,  1766,  1767,   349,   323,
     324,   315,   315,   357,   328,   329,   330,   331,   332,   333,
     352,   323,   324,   325,   362,   315,   328,   329,   323,   324,
     325,   315,   315,   328,   329,   315,  1210,   315,  1745,   315,
     349,  1748,  1749,   315,  1589,  1590,   315,   336,   315,   315,
     315,   315,   315,  1760,  1761,  1762,   349,  1764,   315,  1766,
    1767,   357,   315,   359,   323,   324,   325,   315,   315,   328,
     329,   315,   349,  1528,   349,   350,   351,   352,   353,  1624,
    1625,  1626,  1627,   315,   315,   323,   324,   315,   363,   315,
     328,   329,   315,   335,   315,   315,  1270,  1271,  1272,     1,
     315,   315,   315,   345,   315,   315,   315,   315,  1282,  1283,
    1284,   315,   315,   315,   357,   357,   359,   359,   315,   315,
     315,   315,  1296,   315,   357,   315,   359,   315,  1302,  1303,
     357,  1305,   359,   315,   363,  1309,  1310,  1311,  1312,  1313,
    1314,  1315,   281,   282,   283,   284,  1691,   286,     0,     1,
     357,   315,   359,  1327,  1328,  1329,  1330,  1331,  1332,  1333,
     315,   315,    14,    15,    16,    17,    18,    19,    20,    21,
      72,    73,    74,    75,  1102,    77,   357,    79,   359,    81,
     357,   357,   359,   359,   315,   315,    38,   315,    40,   335,
      42,    43,    44,    45,    46,  1123,   315,  1125,  1620,   345,
    1745,  1623,   335,  1748,  1749,   315,    58,    89,    90,    91,
      92,   357,   345,   359,  1669,  1760,  1761,  1762,   335,  1764,
     315,  1766,  1767,   315,   357,   315,   359,   315,   345,   315,
     315,  1405,   315,   315,   315,   315,  1164,   315,   315,   315,
     357,   315,   359,    95,    96,    97,    98,    99,   100,   101,
     102,   103,   104,   105,   106,   107,   108,   109,   315,   315,
     112,   113,   114,   115,   116,   117,   118,   119,   120,   121,
     122,   123,   124,   125,   126,   127,   128,   129,   130,   131,
     132,   133,   134,   135,   136,   137,   138,   139,   140,   141,
     142,   143,   144,   145,   146,   147,   148,   149,   150,   151,
     152,   153,   154,   315,   156,   157,   158,   159,   160,   161,
     162,   163,   164,   165,   166,   167,   168,   169,   170,   171,
     172,   173,   174,   175,   176,   177,   178,   179,   180,   181,
     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
     192,   193,   194,   195,   196,   197,   198,   199,   200,   201,
     202,   203,   204,   205,   206,   207,   208,   209,   210,   211,
     212,   213,   214,   215,   216,   217,   218,   219,   220,   221,
     222,   223,   224,   225,   226,   227,   228,   229,   230,   231,
     232,   233,   315,   315,   315,   315,   238,   239,   240,   241,
     242,   243,   244,   245,   246,   247,   248,   249,   250,   251,
     252,   253,   254,   255,   256,   257,   258,   259,   260,   261,
     262,   263,   264,   265,   266,   267,   268,   269,   270,   271,
     272,   273,   274,   275,   276,   277,  1600,   279,   280,   315,
     315,   315,  1606,   285,   315,   287,   288,   289,   290,   291,
     292,   293,   294,   295,   296,   297,   298,   299,   315,   315,
     315,   315,   315,   315,   336,   315,   315,   315,   315,   315,
     312,   313,   314,   357,   315,   315,   315,   349,   350,   351,
     352,   353,   349,   350,   351,   352,   353,   315,   360,   315,
     315,   363,   315,   360,   315,   315,   363,   302,   303,   304,
     305,   306,   307,   308,   309,   310,   315,   366,   350,   278,
     361,   349,  1676,   349,   349,   349,   358,   349,   349,   349,
     349,   364,   349,   365,  1688,   349,   363,   349,   361,   345,
     349,     1,  1696,     3,     4,     5,     6,     7,     8,     9,
      10,    11,    12,    13,    14,   350,   349,   349,   349,   349,
     349,   349,    22,    23,    24,    25,    26,    27,    28,    29,
     366,    31,    32,    33,    34,    35,    36,    37,    38,    39,
     361,    41,   361,    43,   349,   349,   357,    47,   357,    49,
      50,    51,    52,    53,    54,    55,    56,   315,   315,    59,
      60,    61,   315,   315,  1758,    65,    66,    67,    68,    69,
      70,     1,   315,     3,     4,     5,     6,     7,     8,     9,
      10,    11,    12,    13,    14,   349,   356,   315,   364,   349,
     357,   359,    22,    23,    24,    25,    26,    27,    28,    29,
     315,    31,    32,    33,    34,    35,    36,    37,    38,    39,
     364,    41,   352,    43,   352,   352,   364,    47,   360,    49,
      50,    51,    52,    53,    54,    55,    56,   360,   360,    59,
      60,    61,   345,   360,   360,    65,    66,    67,    68,    69,
      70,     1,   360,     3,     4,     5,     6,     7,     8,     9,
      10,    11,    12,    13,    14,   360,   360,   360,   360,   360,
     358,   358,    22,    23,    24,    25,    26,    27,    28,    29,
     364,    31,    32,    33,    34,    35,    36,    37,    38,    39,
     364,    41,   364,    43,   364,   361,   345,    47,   366,    49,
      50,    51,    52,    53,    54,    55,    56,   357,   361,    59,
      60,    61,   357,   360,   360,    65,    66,    67,    68,    69,
      70,     1,   360,     3,     4,     5,     6,     7,     8,     9,
      10,    11,    12,    13,    14,   352,   359,   359,   359,   359,
     359,   359,    22,    23,    24,    25,    26,    27,    28,    29,
     359,    31,    32,    33,    34,    35,    36,    37,    38,    39,
     359,    41,   359,    43,   360,   345,   361,    47,   361,    49,
      50,    51,    52,    53,    54,    55,    56,   361,   361,    59,
      60,    61,   278,   349,   352,    65,    66,    67,    68,    69,
      70,   320,   321,   322,   323,   324,   325,   326,   327,   328,
     329,   330,   331,   332,   333,   334,   335,   336,   337,   338,
     300,   330,   331,   332,   333,   334,   335,   336,   337,   338,
     359,   349,   359,   359,   359,   359,   316,   317,   318,   319,
     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
     330,   331,   332,   333,   334,   335,   336,   337,   338,   350,
     359,   315,   315,   315,   315,   345,   359,   362,   357,   363,
     350,   359,   359,   357,   354,   355,   359,   357,   358,   359,
     360,   361,   359,   359,   359,   359,   366,   359,   359,   359,
     300,   359,   359,   359,   359,   359,   359,   359,   359,   359,
     359,   359,   359,   359,   359,    48,   316,   317,   318,   319,
     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
     330,   331,   332,   333,   334,   335,   336,   337,   338,   359,
     359,   359,   359,   359,   359,   359,   359,   359,   359,   359,
     350,   359,   359,   359,   354,   355,   357,   357,   358,   359,
     360,   361,   366,   366,   359,   359,   366,   359,   359,   359,
     300,   359,   359,   359,   350,   364,   357,   352,   352,   315,
     345,   111,   359,   349,   363,   349,   316,   317,   318,   319,
     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
     330,   331,   332,   333,   334,   335,   336,   337,   338,   359,
     359,   359,   359,   359,   349,   349,   349,   349,   349,   359,
     350,   349,   349,   349,   354,   355,   349,   357,   358,   359,
     349,   361,   349,   349,   349,   345,   366,   359,   337,   352,
     300,   352,   362,   349,   352,   366,   364,   359,   211,  1035,
     359,   934,   359,   390,   359,   359,   316,   317,   318,   319,
     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
     330,   331,   332,   333,   334,   335,   336,   337,   338,   359,
     359,   359,   359,   359,   359,   359,   359,   359,   359,   359,
     350,   359,   359,   359,   354,   355,     1,   357,   358,   359,
     359,   361,   359,   359,   359,   359,   366,   359,   359,    14,
      15,    16,    17,    18,    19,    20,    21,   323,   324,   325,
     326,   327,   328,   329,   330,   331,   332,   333,   334,   335,
     336,   337,   338,    38,   359,    40,   366,    42,    43,    44,
      45,    46,   366,   366,   359,   359,   359,   359,   364,   366,
    1272,   903,   905,    58,   364,   366,  1225,   391,  1274,  1274,
     316,   317,   318,   319,   320,   321,   322,   323,   324,   325,
     326,   327,   328,   329,   330,   331,   332,   333,   334,   335,
     336,   337,   338,   576,  1604,    -1,  1406,  1688,  1696,  1670,
      95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
     105,   106,   107,   108,   109,   361,    -1,   112,   113,   114,
     115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
     125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
     135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
     145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
      -1,   156,   157,   158,   159,   160,   161,   162,   163,   164,
     165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
     175,   176,   177,   178,   179,   180,   181,   182,   183,   184,
     185,   186,   187,   188,   189,   190,   191,   192,   193,   194,
     195,   196,   197,   198,   199,   200,   201,   202,   203,   204,
     205,   206,   207,   208,   209,   210,   211,   212,   213,   214,
     215,   216,   217,   218,   219,   220,   221,   222,   223,   224,
     225,   226,   227,   228,   229,   230,   231,   232,   233,    -1,
      -1,    -1,    -1,   238,   239,   240,   241,   242,   243,   244,
     245,   246,   247,   248,   249,   250,   251,   252,   253,   254,
     255,   256,   257,   258,   259,   260,   261,   262,   263,   264,
     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
     275,   276,   277,    -1,   279,   280,    -1,    -1,    -1,    -1,
     285,    -1,   287,   288,   289,   290,   291,   292,   293,   294,
     295,   296,   297,   298,   299,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   312,   313,   314,
      -1,    -1,    -1,    -1,    -1,   316,   317,   318,   319,   320,
     321,   322,   323,   324,   325,   326,   327,   328,   329,   330,
     331,   332,   333,   334,   335,   336,   337,   338,    -1,    -1,
      -1,    -1,    -1,    -1,     1,   350,     3,     4,     5,     6,
       7,    -1,    -1,   358,    -1,    12,    13,    14,   359,    -1,
     365,    -1,    -1,    -1,    -1,    22,    23,    24,    25,    26,
      27,    28,    29,    -1,    31,    32,    33,    34,    35,    36,
      37,    38,    39,    -1,    41,    -1,    43,    -1,    -1,    -1,
      -1,    -1,    49,    50,    51,    52,    53,    54,    55,    -1,
      -1,    -1,    -1,    60,    61,    -1,    -1,    -1,    65,    66,
      67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
      77,    78,    79,    80,    81,    82,    83,    84,    85,    86,
      87,    88,     1,    -1,     3,     4,     5,     6,     7,     8,
       9,    10,    11,    12,    13,    14,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    22,    23,    24,    25,    26,    27,    28,
      29,    -1,    31,    32,    33,    34,    35,    36,    37,    38,
      39,    -1,    41,    -1,    43,    -1,    -1,    -1,    47,    -1,
      49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
      59,    60,    61,    -1,    -1,    -1,    65,    66,    67,    68,
      69,    70,     1,    -1,     3,     4,     5,     6,     7,     8,
       9,    10,    11,    12,    13,    14,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    22,    23,    24,    25,    26,    27,    28,
      29,    -1,    31,    32,    33,    34,    35,    36,    37,    38,
      39,    -1,    41,    -1,    43,    -1,    -1,    -1,    47,    -1,
      49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
      59,    60,    61,    -1,    -1,    -1,    65,    66,    67,    68,
      69,    70,     1,    -1,     3,     4,     5,     6,     7,     8,
       9,    10,    11,    12,    13,    14,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    22,    23,    24,    25,    26,    27,    28,
      29,    -1,    31,    32,    33,    34,    35,    36,    37,    38,
      39,    -1,    41,    -1,    43,    -1,    -1,    -1,    47,    -1,
      49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
      59,    60,    61,    -1,    -1,    -1,    65,    66,    67,    68,
      69,    70,    -1,   300,   301,   316,   317,   318,   319,   320,
     321,   322,   323,   324,   325,   326,   327,   328,   329,   330,
     331,   332,   333,   334,   335,   336,   337,   338,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   335,    -1,
      -1,    -1,   339,    -1,   341,   342,   343,   344,   359,   346,
     347,   348,   349,   350,    -1,   352,   353,   354,   355,    -1,
      -1,    -1,    -1,   360,   361,    -1,   363,    -1,    -1,    -1,
      -1,     1,    -1,     3,     4,     5,     6,     7,     8,     9,
      10,    11,    12,    13,    14,    -1,    -1,    -1,    -1,    -1,
      -1,   300,    22,    23,    24,    25,    26,    27,    28,    29,
      -1,    31,    32,    33,    34,    35,    36,    37,    38,    39,
      -1,    41,    -1,    43,    -1,    -1,    -1,    47,    -1,    49,
      50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
      60,    61,    -1,    -1,    -1,    65,    66,    67,    68,    69,
      70,   350,    -1,    -1,    -1,   354,   355,    -1,    -1,   358,
      -1,    -1,    -1,   362,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,   300,   316,   317,   318,   319,   320,   321,   322,   323,
     324,   325,   326,   327,   328,   329,   330,   331,   332,   333,
     334,   335,   336,   337,   338,   319,   320,   321,   322,   323,
     324,   325,   326,   327,   328,   329,   330,   331,   332,   333,
     334,   335,   336,   337,   338,   359,    -1,    -1,    -1,    -1,
      -1,   350,    -1,    -1,    -1,   354,   355,    -1,    -1,   358,
      -1,    -1,    -1,   362,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,   300,   316,   317,   318,   319,   320,   321,   322,   323,
     324,   325,   326,   327,   328,   329,   330,   331,   332,   333,
     334,   335,   336,   337,   338,   321,   322,   323,   324,   325,
     326,   327,   328,   329,   330,   331,   332,   333,   334,   335,
     336,   337,   338,    -1,    -1,   359,    -1,    -1,    -1,    -1,
      -1,   350,    -1,    -1,    -1,   354,   355,    -1,    -1,   358,
      -1,    -1,     1,   362,     3,     4,     5,     6,     7,     8,
       9,    10,    11,    12,    13,    14,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    22,    23,    24,    25,    26,    27,    28,
      29,    -1,    31,    32,    33,    34,    35,    36,    37,    38,
      39,    -1,    41,    -1,    43,    -1,    -1,    -1,    47,    -1,
      49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
      59,    60,    61,    -1,    -1,    -1,    65,    66,    67,    68,
      69,    70,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     300,   316,   317,   318,   319,   320,   321,   322,   323,   324,
     325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
     335,   336,   337,   338,   322,   323,   324,   325,   326,   327,
     328,   329,   330,   331,   332,   333,   334,   335,   336,   337,
     338,    -1,    -1,    -1,   359,    -1,    -1,    -1,    -1,    -1,
     350,    -1,    -1,    -1,   354,   355,    -1,    -1,   358,    -1,
      -1,     1,   362,     3,     4,     5,     6,     7,     8,     9,
      10,    11,    12,    13,    14,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    22,    23,    24,    25,    26,    27,    28,    29,
      -1,    31,    32,    33,    34,    35,    36,    37,    38,    39,
      -1,    41,    -1,    43,    -1,    -1,    -1,    47,    -1,    49,
      50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
      60,    61,    -1,    -1,    -1,    65,    66,    67,    68,    69,
      70,     1,    -1,     3,     4,     5,     6,     7,     8,     9,
      10,    11,    12,    13,    14,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    22,    23,    24,    25,    26,    27,    28,    29,
      -1,    31,    32,    33,    34,    35,    36,    37,    38,    39,
      -1,    41,    -1,    43,    -1,    -1,    -1,    47,    -1,    49,
      50,    51,    52,    53,    54,    55,    56,    -1,    -1,    59,
      60,    61,    -1,    -1,    -1,    65,    66,    67,    68,    69,
      70,     1,    -1,     3,     4,     5,     6,     7,     8,     9,
      10,    11,    12,    13,    14,    -1,    -1,    -1,    -1,    -1,
      -1,   300,    22,    23,    24,    25,    26,    27,    28,    29,
      -1,    31,    32,    33,    34,    35,    36,    37,    38,    39,
      -1,    41,    -1,    43,    -1,    -1,    -1,    47,    -1,    49,
      50,    51,    52,    53,    54,    55,    56,    -1,    -1,    59,
      60,    61,    -1,    -1,    -1,    65,    66,    67,    68,    69,
      70,   350,    -1,    -1,    -1,   354,   355,    -1,    -1,   358,
      -1,    -1,     1,   362,     3,     4,     5,     6,     7,     8,
       9,    10,    11,    12,    13,    14,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    22,    23,    24,    25,    26,    27,    28,
      29,    -1,    31,    32,    33,    34,    35,    36,    37,    38,
      39,    -1,    41,    -1,    43,    -1,    -1,    -1,    47,    -1,
      49,    50,    51,    52,    53,    54,    55,    56,    -1,    -1,
      59,    60,    61,    -1,    -1,    -1,    65,    66,    67,    68,
      69,    70,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     300,   316,   317,   318,   319,   320,   321,   322,   323,   324,
     325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
     335,   336,   337,   338,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,   359,    -1,    -1,    -1,    -1,    -1,
     350,    -1,    -1,    -1,   354,   355,    -1,    -1,   358,    -1,
      -1,    -1,   362,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     300,   316,   317,   318,   319,   320,   321,   322,   323,   324,
     325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
     335,   336,   337,   338,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,   357,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     350,    -1,    -1,    -1,   354,   355,    -1,    -1,   358,    -1,
      -1,    -1,   362,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     300,   316,   317,   318,   319,   320,   321,   322,   323,   324,
     325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
     335,   336,   337,   338,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,   357,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     350,    -1,    -1,    -1,   354,   355,    -1,    -1,   358,    -1,
      -1,     1,   362,     3,     4,     5,     6,     7,     8,     9,
      10,    11,    12,    13,    14,    -1,    -1,    -1,    -1,    -1,
      -1,   300,    22,    23,    24,    25,    26,    27,    28,    29,
      -1,    31,    32,    33,    34,    35,    36,    37,    38,    39,
      -1,    41,    -1,    43,    -1,    -1,    -1,    47,    -1,    49,
      50,    51,    52,    53,    54,    55,    56,    -1,    -1,    59,
      60,    61,    -1,    -1,    -1,    65,    66,    67,    68,    69,
      70,   350,    -1,    -1,    -1,   354,   355,    -1,    -1,   358,
      -1,    -1,     1,   362,     3,     4,     5,     6,     7,     8,
       9,    10,    11,    12,    13,    14,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    22,    23,    24,    25,    26,    27,    28,
      29,    -1,    31,    32,    33,    34,    35,    36,    37,    38,
      39,    -1,    41,    -1,    43,    -1,    -1,    -1,    47,    -1,
      49,    50,    51,    52,    53,    54,    55,    56,    -1,    -1,
      59,    60,    61,    -1,    -1,    -1,    65,    66,    67,    68,
      69,    70,     1,    -1,     3,     4,     5,     6,     7,     8,
       9,    10,    11,    12,    13,    14,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    22,    23,    24,    25,    26,    27,    28,
      29,    -1,    31,    32,    33,    34,    35,    36,    37,    38,
      39,    -1,    41,    -1,    43,    -1,    -1,    -1,    47,    -1,
      49,    50,    51,    52,    53,    54,    55,    56,    -1,    -1,
      59,    60,    61,    -1,    -1,    -1,    65,    66,    67,    68,
      69,    70,     1,    -1,     3,     4,     5,     6,     7,     8,
       9,    10,    11,    12,    13,    14,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    22,    23,    24,    25,    26,    27,    28,
      29,    -1,    31,    32,    33,    34,    35,    36,    37,    38,
      39,    -1,    41,    -1,    43,    -1,    -1,    -1,    47,    -1,
      49,    50,    51,    52,    53,    54,    55,    56,    -1,    -1,
      59,    60,    61,    -1,    -1,    -1,    65,    66,    67,    68,
      69,    70,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     300,   316,   317,   318,   319,   320,   321,   322,   323,   324,
     325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
     335,   336,   337,   338,   317,   318,   319,   320,   321,   322,
     323,   324,   325,   326,   327,   328,   329,   330,   331,   332,
     333,   334,   335,   336,   337,   338,    -1,    -1,    -1,    -1,
     350,    -1,    -1,    -1,   354,   355,    -1,    -1,   358,    -1,
      -1,     1,   362,     3,     4,     5,     6,     7,     8,     9,
      10,    11,    12,    13,    14,    -1,    -1,    -1,    -1,    -1,
      -1,   300,    22,    23,    24,    25,    26,    27,    28,    29,
      -1,    31,    32,    33,    34,    35,    36,    37,    38,    39,
      -1,    41,    -1,    43,    -1,    -1,    -1,    47,    -1,    49,
      50,    51,    52,    53,    54,    55,    56,    -1,    -1,    59,
      60,    61,    -1,    -1,    -1,    65,    66,    67,    68,    69,
      70,   350,    -1,    -1,    -1,   354,   355,    -1,    -1,   358,
      -1,    -1,    -1,   362,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,   300,   318,   319,   320,   321,   322,   323,   324,   325,
     326,   327,   328,   329,   330,   331,   332,   333,   334,   335,
     336,   337,   338,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,   350,    -1,    -1,    -1,   354,   355,    -1,    -1,   358,
      -1,    -1,    -1,   362,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,   300,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,   350,    -1,    -1,    -1,   354,   355,    -1,    -1,   358,
      -1,    -1,     1,   362,     3,     4,     5,     6,     7,     8,
       9,    10,    11,    12,    13,    14,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    22,    23,    24,    25,    26,    27,    28,
      29,    -1,    31,    32,    33,    34,    35,    36,    37,    38,
      39,    -1,    41,    -1,    43,    -1,    -1,    -1,    47,    -1,
      49,    50,    51,    52,    53,    54,    55,    56,    -1,    -1,
      59,    60,    61,    -1,    -1,    -1,    65,    66,    67,    68,
      69,    70,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     300,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     350,    -1,    -1,    -1,   354,   355,    -1,    -1,   358,    -1,
      -1,     1,   362,     3,     4,     5,     6,     7,     8,     9,
      10,    11,    12,    13,    14,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    22,    23,    24,    25,    26,    27,    28,    29,
      -1,    31,    32,    33,    34,    35,    36,    37,    38,    39,
      -1,    41,    -1,    43,    -1,    -1,    -1,    47,    -1,    49,
      50,    51,    52,    53,    54,    55,    56,    -1,    -1,    59,
      60,    61,    -1,    -1,    -1,    65,    66,    67,    68,    69,
      70,     1,    -1,     3,     4,     5,     6,     7,     8,     9,
      10,    11,    12,    13,    14,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    22,    23,    24,    25,    26,    27,    28,    29,
      -1,    31,    32,    33,    34,    35,    36,    37,    38,    39,
      -1,    41,    -1,    43,    -1,    -1,    -1,    47,    -1,    49,
      50,    51,    52,    53,    54,    55,    56,    -1,    -1,    59,
      60,    61,    -1,    -1,    -1,    65,    66,    67,    68,    69,
      70,     1,    -1,     3,     4,     5,     6,     7,     8,     9,
      10,    11,    12,    13,    14,    -1,    -1,    -1,    -1,    -1,
      -1,   300,    22,    23,    24,    25,    26,    27,    28,    29,
      -1,    31,    32,    33,    34,    35,    36,    37,    38,    39,
      -1,    41,    -1,    43,    -1,    -1,    -1,    47,    -1,    49,
      50,    51,    52,    53,    54,    55,    56,    -1,    -1,    59,
      60,    61,    -1,    -1,    -1,    65,    66,    67,    68,    69,
      70,   350,    -1,    -1,    -1,   354,   355,    -1,    -1,   358,
      -1,    -1,     1,   362,     3,     4,     5,     6,     7,     8,
       9,    10,    11,    12,    13,    14,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    22,    23,    24,    25,    26,    27,    28,
      29,    -1,    31,    32,    33,    34,    35,    36,    37,    38,
      39,    -1,    41,    -1,    43,    -1,    -1,    -1,    47,    -1,
      49,    50,    51,    52,    53,    54,    55,    56,    -1,    -1,
      59,    60,    61,    -1,    -1,    -1,    65,    66,    67,    68,
      69,    70,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     300,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     350,    -1,    -1,    -1,   354,   355,    -1,    -1,   358,    -1,
      -1,    -1,   362,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     300,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     350,    -1,    -1,    -1,   354,   355,    -1,    -1,   358,    -1,
      -1,    -1,   362,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     300,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     350,    -1,    -1,    -1,   354,   355,    -1,    -1,   358,    -1,
      -1,    -1,   362,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,   300,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,   350,    -1,    -1,    -1,   354,   355,    -1,    -1,   358,
      -1,    -1,     1,   362,     3,     4,     5,     6,     7,    -1,
      -1,    -1,    -1,    12,    13,    14,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    22,    23,    24,    25,    26,    27,    28,
      29,    -1,    31,    32,    33,    34,    35,    36,    37,    38,
      39,    -1,    41,    -1,    43,    -1,    -1,    -1,    -1,    -1,
      49,    50,    51,    52,    53,    54,    55,    -1,    -1,    -1,
      -1,    60,    61,    -1,    -1,    -1,    65,    66,    67,    68,
      69,    70,    71,    72,    73,    74,    75,    76,    77,    78,
      79,    80,    81,    82,    83,    84,    85,    86,    87,    88,
      89,    90,    91,    92,    93,    94,     1,    -1,     3,     4,
       5,     6,     7,    -1,    -1,    -1,    -1,    12,    13,    14,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    22,    23,    24,
      25,    26,    27,    28,    29,    -1,    31,    32,    33,    34,
      35,    36,    37,    38,    39,    -1,    41,    -1,    43,    -1,
      -1,    -1,    -1,    -1,    49,    50,    51,    52,    53,    54,
      55,    -1,    -1,    -1,    -1,    60,    61,    -1,    -1,    -1,
      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
      75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
      85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
       1,    -1,     3,     4,     5,     6,     7,    -1,    -1,    -1,
      -1,    12,    13,    14,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    22,    23,    24,    25,    26,    27,    28,    29,    -1,
      31,    32,    33,    34,    35,    36,    37,    38,    39,    -1,
      41,    -1,    43,    -1,    -1,    -1,    -1,    -1,    49,    50,
      51,    52,    53,    54,    55,    -1,    -1,    -1,    -1,    60,
      61,    -1,    -1,    -1,    65,    66,    67,    68,    69,    70,
      71,    72,    73,    74,    75,    76,    77,    78,    79,    80,
      81,    82,    83,    84,    85,    86,    87,    88,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,   300,   301,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,   335,   336,    -1,    -1,
     339,    -1,   341,   342,   343,   344,    -1,   346,   347,   348,
     349,   350,    -1,   352,    -1,   354,   355,    -1,    -1,    -1,
      -1,   360,   361,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,   300,   301,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     335,   336,    -1,    -1,   339,    -1,   341,   342,   343,   344,
      -1,   346,   347,   348,   349,   350,    -1,   352,    -1,   354,
     355,    -1,    -1,    -1,    -1,   360,   361,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   300,
     301,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,   335,    -1,    -1,    -1,   339,    -1,
     341,   342,   343,   344,    -1,   346,   347,   348,   349,   350,
      -1,   352,    -1,   354,   355,    -1,    -1,    -1,   359,   360,
     361,     1,    -1,     3,     4,     5,     6,     7,    -1,    -1,
      -1,    -1,    12,    13,    14,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    22,    23,    24,    25,    26,    27,    28,    29,
      -1,    31,    32,    33,    34,    35,    36,    37,    38,    39,
      -1,    41,    -1,    43,    -1,    -1,    -1,    -1,    -1,    49,
      50,    51,    52,    53,    54,    55,    -1,    -1,    -1,    -1,
      60,    61,    -1,    -1,    -1,    65,    66,    67,    68,    69,
      70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
      80,    81,    82,    83,    84,    85,    86,    87,    88,     1,
      -1,     3,     4,     5,     6,     7,    -1,    -1,    -1,    -1,
      12,    13,    14,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      22,    23,    24,    25,    26,    27,    28,    29,    -1,    31,
      32,    33,    34,    35,    36,    37,    38,    39,    -1,    41,
      -1,    43,    -1,    -1,    -1,    -1,    -1,    49,    50,    51,
      52,    53,    54,    55,    -1,    -1,    -1,    -1,    60,    61,
      -1,    -1,    -1,    65,    66,    67,    68,    69,    70,    71,
      72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
      82,    83,    84,    85,    86,    87,    88,     1,    -1,     3,
       4,     5,     6,     7,    -1,    -1,    -1,    -1,    12,    13,
      14,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    22,    23,
      24,    25,    26,    27,    28,    29,    -1,    31,    32,    33,
      34,    35,    36,    37,    38,    39,    -1,    41,    -1,    43,
      -1,    -1,    -1,    -1,    -1,    49,    50,    51,    52,    53,
      54,    55,    -1,    -1,    -1,    -1,    60,    61,    -1,    -1,
      -1,    65,    66,    67,    68,    69,    70,    71,    72,    73,
      74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
      84,    85,    86,    87,    88,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     300,   301,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,   335,    -1,    -1,    -1,   339,
      -1,   341,   342,   343,   344,    -1,   346,   347,   348,   349,
     350,    -1,   352,    -1,   354,   355,    -1,    -1,    -1,   359,
     360,   361,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   300,   301,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,   335,    -1,    -1,    -1,   339,    -1,   341,
     342,   343,   344,    -1,   346,   347,   348,   349,   350,    -1,
     352,    -1,   354,   355,    -1,    -1,    -1,   359,   360,   361,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,   300,   301,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,   335,    -1,   337,    -1,   339,    -1,   341,   342,   343,
     344,    -1,   346,   347,   348,   349,   350,    -1,   352,    -1,
     354,   355,    -1,    -1,    -1,    -1,   360,   361,     1,    -1,
       3,     4,     5,     6,     7,    -1,    -1,    -1,    -1,    12,
      13,    14,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    22,
      23,    24,    25,    26,    27,    28,    29,    -1,    31,    32,
      33,    34,    35,    36,    37,    38,    39,    -1,    41,    -1,
      43,    -1,    -1,    -1,    -1,    -1,    49,    50,    51,    52,
      53,    54,    55,    -1,    -1,    -1,    -1,    60,    61,    -1,
      -1,    -1,    65,    66,    67,    68,    69,    70,    71,    72,
      73,    74,    75,    76,    77,    78,    79,    80,    81,    82,
      83,    84,    85,    86,    87,    88,     1,    -1,     3,     4,
       5,     6,     7,    -1,    -1,    -1,    -1,    12,    13,    14,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    22,    23,    24,
      25,    26,    27,    28,    29,    -1,    31,    32,    33,    34,
      35,    36,    37,    38,    39,    -1,    41,    -1,    43,    -1,
      -1,    -1,    -1,    -1,    49,    50,    51,    52,    53,    54,
      55,    -1,    -1,    -1,    -1,    60,    61,    -1,    -1,    -1,
      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
      75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
      85,    86,    87,    88,     1,    -1,     3,     4,     5,     6,
       7,    -1,    -1,    -1,    -1,    12,    13,    14,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    22,    23,    24,    25,    26,
      27,    28,    29,    -1,    31,    32,    33,    34,    35,    36,
      37,    38,    39,    -1,    41,    -1,    43,    -1,    -1,    -1,
      -1,    -1,    49,    50,    51,    52,    53,    54,    55,    -1,
      -1,    -1,    -1,    60,    61,    -1,    -1,    -1,    65,    66,
      67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
      77,    78,    79,    80,    81,    82,    83,    84,    85,    86,
      87,    88,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   300,   301,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,   335,    -1,    -1,    -1,   339,    -1,   341,   342,
     343,   344,    -1,   346,   347,   348,   349,   350,    -1,   352,
      -1,   354,   355,    -1,    -1,    -1,    -1,   360,   361,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,   300,   301,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     335,    -1,    -1,    -1,   339,    -1,   341,   342,   343,   344,
      -1,   346,   347,   348,   349,   350,    -1,   352,    -1,   354,
     355,    -1,    -1,    -1,    -1,   360,   361,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,   300,   301,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   335,    -1,
      -1,    -1,   339,    -1,   341,   342,   343,   344,    -1,   346,
     347,   348,   349,   350,    -1,   352,    -1,   354,   355,    -1,
      -1,    -1,    -1,   360,   361,     1,    -1,     3,     4,     5,
       6,     7,    -1,    -1,    -1,    -1,    12,    13,    14,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    22,    23,    24,    25,
      26,    27,    28,    29,    -1,    31,    32,    33,    34,    35,
      36,    37,    38,    39,    -1,    41,    -1,    43,    -1,    -1,
      -1,    -1,    -1,    49,    50,    51,    52,    53,    54,    55,
      -1,    -1,    -1,    -1,    60,    61,    -1,    -1,    -1,    65,
      66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
      76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
      86,    87,    88,     1,    -1,     3,     4,     5,     6,     7,
      -1,    -1,    -1,    -1,    12,    13,    14,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    22,    23,    24,    25,    26,    27,
      28,    29,    -1,    31,    32,    33,    34,    35,    36,    37,
      38,    39,    -1,    41,    -1,    43,    -1,    -1,    -1,    -1,
      -1,    49,    50,    51,    52,    53,    54,    55,    -1,    -1,
      -1,    -1,    60,    61,    -1,    -1,    -1,    65,    66,    67,
      68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
      78,    79,    80,    81,    82,    83,    84,    85,    86,    87,
      88,     1,    -1,     3,     4,     5,     6,     7,    -1,    -1,
      -1,    -1,    12,    13,    14,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    22,    23,    24,    25,    26,    27,    28,    29,
      -1,    31,    32,    33,    34,    35,    36,    37,    38,    39,
      -1,    41,    -1,    43,    -1,    -1,    -1,    -1,    -1,    49,
      50,    51,    52,    53,    54,    55,    -1,    -1,    -1,    -1,
      60,    61,    -1,    -1,    -1,    65,    66,    67,    68,    69,
      70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
      80,    81,    82,    83,    84,    85,    86,    87,    88,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,   300,   301,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   335,
      -1,    -1,    -1,   339,    -1,   341,   342,   343,   344,    -1,
     346,   347,   348,   349,   350,    -1,   352,    -1,   354,   355,
      -1,    -1,    -1,    -1,   360,   361,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,   300,   301,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   335,    -1,    -1,
      -1,   339,    -1,   341,   342,   343,   344,    -1,   346,   347,
     348,   349,   350,    -1,   352,    -1,   354,   355,    -1,    -1,
      -1,    -1,   360,   361,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     300,   301,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,   335,    -1,    -1,    -1,   339,
      -1,   341,   342,   343,   344,    -1,   346,   347,   348,   349,
     350,    -1,   352,    -1,   354,   355,    -1,    -1,    -1,    -1,
     360,   361,     1,    -1,     3,     4,     5,     6,     7,    -1,
      -1,    -1,    -1,    12,    13,    14,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    22,    23,    24,    25,    26,    27,    28,
      29,    -1,    31,    32,    33,    34,    35,    36,    37,    38,
      39,    -1,    41,    -1,    43,    -1,    -1,    -1,    -1,    -1,
      49,    50,    51,    52,    53,    54,    55,    -1,    -1,    -1,
      -1,    60,    61,    -1,    -1,    -1,    65,    66,    67,    68,
      69,    70,    71,    72,    73,    74,    75,    76,    77,    78,
      79,    80,    81,    82,    83,    84,    85,    86,    87,    88,
       1,    -1,     3,     4,     5,     6,     7,    -1,    -1,    -1,
      -1,    12,    13,    14,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    22,    23,    24,    25,    26,    27,    28,    29,    -1,
      31,    32,    33,    34,    35,    36,    37,    38,    39,    -1,
      41,    -1,    43,    -1,    -1,    -1,    -1,    -1,    49,    50,
      51,    52,    53,    54,    55,    -1,    -1,    -1,    -1,    60,
      61,    -1,    -1,    -1,    65,    66,    67,    68,    69,    70,
      71,    72,    73,    74,    75,    76,    77,    78,    79,    80,
      81,    82,    83,    84,    85,    86,    87,    88,     1,    -1,
       3,     4,     5,     6,     7,    -1,    -1,    -1,    -1,    12,
      13,    14,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    22,
      23,    24,    25,    26,    27,    28,    29,    -1,    31,    32,
      33,    34,    35,    36,    37,    38,    39,    -1,    41,    -1,
      43,    -1,    -1,    -1,    -1,    -1,    49,    50,    51,    52,
      53,    54,    55,    -1,    -1,    -1,    -1,    60,    61,    -1,
      -1,    -1,    65,    66,    67,    68,    69,    70,    71,    72,
      73,    74,    75,    76,    77,    78,    79,    80,    81,    82,
      83,    84,    85,    86,    87,    88,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,   300,   301,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,   335,    -1,    -1,    -1,
     339,    -1,   341,   342,   343,   344,    -1,   346,   347,   348,
     349,   350,    -1,   352,    -1,   354,   355,    -1,    -1,    -1,
      -1,   360,   361,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   300,
     301,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,   335,    -1,    -1,    -1,   339,    -1,
     341,   342,   343,   344,    -1,   346,   347,   348,   349,   350,
      -1,   352,    -1,   354,   355,    -1,    -1,    -1,    -1,   360,
     361,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   300,   301,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,   335,    -1,    -1,    -1,   339,    -1,   341,   342,
     343,   344,    -1,   346,   347,   348,   349,   350,    -1,   352,
      -1,   354,   355,    -1,    -1,    -1,    -1,   360,   361,     1,
      -1,     3,     4,     5,     6,     7,    -1,    -1,    -1,    -1,
      12,    13,    14,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      22,    23,    24,    25,    26,    27,    28,    29,    -1,    31,
      32,    33,    34,    35,    36,    37,    38,    39,    -1,    41,
      -1,    43,    -1,    -1,    -1,    -1,    -1,    49,    50,    51,
      52,    53,    54,    55,    -1,    -1,    -1,    -1,    60,    61,
      -1,    -1,    -1,    65,    66,    67,    68,    69,    70,    71,
      72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
      82,    83,    84,    85,    86,    87,    88,     1,    -1,     3,
       4,     5,     6,     7,    -1,    -1,    -1,    -1,    12,    13,
      14,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    22,    23,
      24,    25,    26,    27,    28,    29,    -1,    31,    32,    33,
      34,    35,    36,    37,    38,    39,    -1,    41,    -1,    43,
      -1,    -1,    -1,    -1,    -1,    49,    50,    51,    52,    53,
      54,    55,    -1,    -1,    -1,    -1,    60,    61,    -1,    -1,
      -1,    65,    66,    67,    68,    69,    70,    71,    72,    73,
      74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
      84,    85,    86,    87,    88,     1,    -1,     3,     4,     5,
       6,     7,    -1,    -1,    -1,    -1,    12,    13,    14,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    22,    23,    24,    25,
      26,    27,    28,    29,    -1,    31,    32,    33,    34,    35,
      36,    37,    38,    39,    -1,    41,    -1,    43,    -1,    -1,
      -1,    -1,    -1,    49,    50,    51,    52,    53,    54,    55,
      -1,    -1,    -1,    -1,    60,    61,    -1,    -1,    -1,    65,
      66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
      76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
      86,    87,    88,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   300,   301,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,   335,    -1,    -1,    -1,   339,    -1,   341,
     342,   343,   344,    -1,   346,   347,   348,   349,   350,    -1,
     352,    -1,   354,   355,    -1,    -1,    -1,    -1,   360,   361,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,   300,   301,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,   335,    -1,    -1,    -1,   339,    -1,   341,   342,   343,
     344,    -1,   346,   347,   348,   349,   350,    -1,   352,    -1,
     354,   355,    -1,    -1,    -1,    -1,   360,   361,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,   300,   301,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   335,
      -1,    -1,    -1,   339,    -1,   341,   342,   343,   344,    -1,
     346,   347,   348,   349,   350,    -1,   352,    -1,   354,   355,
      -1,    -1,    -1,    -1,   360,   361,     1,    -1,     3,     4,
       5,     6,     7,    -1,    -1,    -1,    -1,    12,    13,    14,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    22,    23,    24,
      25,    26,    27,    28,    29,    -1,    31,    32,    33,    34,
      35,    36,    37,    38,    39,    -1,    41,    -1,    43,    -1,
      -1,    -1,    -1,    -1,    49,    50,    51,    52,    53,    54,
      55,    -1,    -1,    -1,    -1,    60,    61,    -1,    -1,    -1,
      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
      75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
      85,    86,    87,    88,     1,    -1,     3,     4,     5,     6,
       7,    -1,    -1,    -1,    -1,    12,    13,    14,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    22,    23,    24,    25,    26,
      27,    28,    29,    -1,    31,    32,    33,    34,    35,    36,
      37,    38,    39,    -1,    41,    -1,    43,    -1,    -1,    -1,
      -1,    -1,    49,    50,    51,    52,    53,    54,    55,    -1,
      -1,    -1,    -1,    60,    61,    -1,    -1,    -1,    65,    66,
      67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
      77,    78,    79,    80,    81,    82,    83,    84,    85,    86,
      87,    88,     1,    -1,     3,     4,     5,     6,     7,    -1,
      -1,    -1,    -1,    12,    13,    14,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    22,    23,    24,    25,    26,    27,    28,
      29,    -1,    31,    32,    33,    34,    35,    36,    37,    38,
      39,    -1,    41,    -1,    43,    -1,    -1,    -1,    -1,    -1,
      49,    50,    51,    52,    53,    54,    55,    -1,    -1,    -1,
      -1,    60,    61,    -1,    -1,    -1,    65,    66,    67,    68,
      69,    70,    71,    72,    73,    74,    75,    76,    77,    78,
      79,    80,    81,    82,    83,    84,    85,    86,    87,    88,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,   300,   301,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     335,    -1,    -1,    -1,   339,    -1,   341,   342,   343,   344,
      -1,   346,   347,   348,   349,   350,    -1,   352,    -1,   354,
     355,    -1,    -1,    -1,    -1,   360,   361,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,   300,   301,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   335,    -1,
      -1,    -1,   339,    -1,   341,   342,   343,   344,    -1,   346,
     347,   348,   349,   350,    -1,   352,    -1,   354,   355,    -1,
      -1,    -1,    -1,   360,   361,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,   300,   301,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,   335,    -1,    -1,    -1,
     339,    -1,   341,   342,   343,   344,    -1,   346,   347,   348,
     349,   350,    -1,   352,    -1,   354,   355,    -1,    -1,    -1,
      -1,   360,   361,     1,    -1,     3,     4,     5,     6,     7,
      -1,    -1,    -1,    -1,    12,    13,    14,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    22,    23,    24,    25,    26,    27,
      28,    29,    -1,    31,    32,    33,    34,    35,    36,    37,
      38,    39,    -1,    41,    -1,    43,    -1,    -1,    -1,    -1,
      -1,    49,    50,    51,    52,    53,    54,    55,    -1,    -1,
      -1,    -1,    60,    61,    -1,    -1,    -1,    65,    66,    67,
      68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
      78,    79,    80,    81,    82,    83,    84,    85,    86,    87,
      88,     1,    -1,     3,     4,     5,     6,     7,    -1,    -1,
      -1,    -1,    12,    13,    14,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    22,    23,    24,    25,    26,    27,    28,    29,
      -1,    31,    32,    33,    34,    35,    36,    37,    38,    39,
      -1,    41,    -1,    43,    -1,    -1,    -1,    -1,    -1,    49,
      50,    51,    52,    53,    54,    55,    -1,    -1,    -1,    -1,
      60,    61,    -1,    -1,    -1,    65,    66,    67,    68,    69,
      70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
      80,    81,    82,    83,    84,    85,    86,    87,    88,     1,
      -1,     3,     4,     5,     6,     7,    -1,    -1,    -1,    -1,
      12,    13,    14,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      22,    23,    24,    25,    26,    27,    28,    29,    -1,    31,
      32,    33,    34,    35,    36,    37,    38,    39,    -1,    41,
      -1,    43,    -1,    -1,    -1,    -1,    -1,    49,    50,    51,
      52,    53,    54,    55,    -1,    -1,    -1,    -1,    60,    61,
      -1,    -1,    -1,    65,    66,    67,    68,    69,    70,    71,
      72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
      82,    83,    84,    85,    86,    87,    88,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,   300,   301,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   335,    -1,    -1,
      -1,   339,    -1,   341,   342,   343,   344,    -1,   346,   347,
     348,   349,   350,    -1,   352,    -1,   354,   355,    -1,    -1,
      -1,    -1,   360,   361,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     300,   301,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,   335,    -1,    -1,    -1,   339,
      -1,   341,   342,   343,   344,    -1,   346,   347,   348,   349,
     350,    -1,   352,    -1,   354,   355,    -1,    -1,    -1,    -1,
     360,   361,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   300,   301,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,   335,    -1,    -1,    -1,   339,    -1,   341,
     342,   343,   344,    -1,   346,   347,   348,   349,   350,    -1,
     352,    -1,   354,   355,    -1,    -1,    -1,    -1,   360,   361,
       1,    -1,     3,     4,     5,     6,     7,    -1,    -1,    -1,
      -1,    12,    13,    14,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    22,    23,    24,    25,    26,    27,    28,    29,    -1,
      31,    32,    33,    34,    35,    36,    37,    38,    39,    -1,
      41,    -1,    43,    -1,    -1,    -1,    -1,    -1,    49,    50,
      51,    52,    53,    54,    55,    -1,    -1,    -1,    -1,    60,
      61,    -1,    -1,    -1,    65,    66,    67,    68,    69,    70,
      71,    72,    73,    74,    75,    76,    77,    78,    79,    80,
      81,    82,    83,    84,    85,    86,    87,    88,     1,    -1,
       3,     4,     5,     6,     7,    -1,    -1,    -1,    -1,    12,
      13,    14,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    22,
      23,    24,    25,    26,    27,    28,    29,    -1,    31,    32,
      33,    34,    35,    36,    37,    38,    39,    -1,    41,    -1,
      43,    -1,    -1,    -1,    -1,    -1,    49,    50,    51,    52,
      53,    54,    55,    -1,    -1,    -1,    -1,    60,    61,    -1,
      -1,    -1,    65,    66,    67,    68,    69,    70,    71,    72,
      73,    74,    75,    76,    77,    78,    79,    80,    81,    82,
      83,    84,    85,    86,    87,    88,     1,    -1,     3,     4,
       5,     6,     7,    -1,    -1,    -1,    -1,    12,    13,    14,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    22,    23,    24,
      25,    26,    27,    28,    29,    -1,    31,    32,    33,    34,
      35,    36,    37,    38,    39,    -1,    41,    -1,    43,    -1,
      -1,    -1,    -1,    -1,    49,    50,    51,    52,    53,    54,
      55,    -1,    -1,    -1,    -1,    60,    61,    -1,    -1,    -1,
      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
      75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
      85,    86,    87,    88,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   300,
     301,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,   335,    -1,    -1,    -1,   339,    -1,
     341,   342,   343,   344,    -1,   346,   347,   348,   349,   350,
      -1,   352,    -1,   354,   355,    -1,    -1,    -1,    -1,   360,
     361,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   300,   301,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,   335,    -1,    -1,    -1,   339,    -1,   341,   342,
     343,   344,    -1,   346,   347,   348,   349,   350,    -1,   352,
      -1,   354,   355,    -1,    -1,    -1,    -1,   360,   361,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,   300,   301,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     335,    -1,    -1,    -1,   339,    -1,   341,   342,   343,   344,
      -1,   346,   347,   348,   349,   350,    -1,   352,    -1,   354,
     355,    -1,    -1,    -1,    -1,   360,   361,     1,    -1,     3,
       4,     5,     6,     7,    -1,    -1,    -1,    -1,    12,    13,
      14,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    22,    23,
      24,    25,    26,    27,    28,    29,    -1,    31,    32,    33,
      34,    35,    36,    37,    38,    39,    -1,    41,    -1,    43,
      -1,    -1,    -1,    -1,    -1,    49,    50,    51,    52,    53,
      54,    55,    -1,    -1,    -1,    -1,    60,    61,    -1,    -1,
      -1,    65,    66,    67,    68,    69,    70,    71,    72,    73,
      74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
      84,    85,    86,    87,    88,     1,    -1,     3,     4,     5,
       6,     7,    -1,    -1,    -1,    -1,    12,    13,    14,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    22,    23,    24,    25,
      26,    27,    28,    29,    -1,    31,    32,    33,    34,    35,
      36,    37,    38,    39,    -1,    41,    -1,    43,    -1,    -1,
      -1,    -1,    -1,    49,    50,    51,    52,    53,    54,    55,
      -1,    -1,    -1,    -1,    60,    61,    -1,    -1,    -1,    65,
      66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
      76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
      86,    87,    88,     1,    -1,     3,     4,     5,     6,     7,
      -1,    -1,    -1,    -1,    12,    13,    14,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    22,    23,    24,    25,    26,    27,
      28,    29,    -1,    31,    32,    33,    34,    35,    36,    37,
      38,    39,    -1,    41,    -1,    43,    -1,    -1,    -1,    -1,
      -1,    49,    50,    51,    52,    53,    54,    55,    -1,    -1,
      -1,    -1,    60,    61,    -1,    -1,    -1,    65,    66,    67,
      68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
      78,    79,    80,    81,    82,    83,    84,    85,    86,    87,
      88,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,   300,   301,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,   335,    -1,    -1,    -1,   339,    -1,   341,   342,   343,
     344,    -1,   346,   347,   348,   349,   350,    -1,   352,    -1,
     354,   355,    -1,    -1,    -1,    -1,   360,   361,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,   300,   301,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   335,
      -1,    -1,    -1,   339,    -1,   341,   342,   343,   344,    -1,
     346,   347,   348,   349,   350,    -1,   352,    -1,   354,   355,
      -1,    -1,    -1,    -1,   360,   361,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,   300,   301,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   335,    -1,    -1,
      -1,   339,    -1,   341,   342,   343,   344,    -1,   346,   347,
     348,   349,   350,    -1,   352,    -1,   354,   355,    -1,    -1,
      -1,    -1,   360,   361,     1,    -1,     3,     4,     5,     6,
       7,    -1,    -1,    -1,    -1,    12,    13,    14,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    22,    23,    24,    25,    26,
      27,    28,    29,    -1,    31,    32,    33,    34,    35,    36,
      37,    38,    39,    -1,    41,    -1,    43,    -1,    -1,    -1,
      -1,    -1,    49,    50,    51,    52,    53,    54,    55,    -1,
      -1,    -1,    -1,    60,    61,    -1,    -1,    -1,    65,    66,
      67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
      77,    78,    79,    80,    81,    82,    83,    84,    85,    86,
      87,    88,     1,    -1,     3,     4,     5,     6,     7,    -1,
      -1,    -1,    -1,    12,    13,    14,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    22,    23,    24,    25,    26,    27,    28,
      29,    -1,    31,    32,    33,    34,    35,    36,    37,    38,
      39,    -1,    41,    -1,    43,    -1,    -1,    -1,    -1,    -1,
      49,    50,    51,    52,    53,    54,    55,    -1,    -1,    -1,
      -1,    60,    61,    -1,    -1,    -1,    65,    66,    67,    68,
      69,    70,    71,    72,    73,    74,    75,    76,    77,    78,
      79,    80,    81,    82,    83,    84,    85,    86,    87,    88,
       3,     4,     5,     6,     7,    -1,    -1,    -1,    -1,    12,
      13,    14,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    22,
      23,    24,    25,    26,    27,    28,    29,    -1,    31,    32,
      33,    34,    35,    36,    37,    38,    39,    -1,    41,    -1,
      43,    -1,    -1,    -1,    -1,    -1,    49,    50,    51,    52,
      53,    54,    55,    -1,    -1,    -1,    -1,    60,    61,    -1,
      -1,    -1,    65,    66,    67,    68,    69,    70,    71,    72,
      73,    74,    75,    76,    77,    78,    79,    80,    81,    82,
      83,    84,    85,    86,    87,    88,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,   300,   301,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   335,    -1,
      -1,    -1,   339,    -1,   341,   342,   343,   344,    -1,   346,
     347,   348,   349,   350,    -1,   352,    -1,   354,   355,    -1,
      -1,    -1,    -1,   360,   361,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,   300,   301,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,   335,    -1,    -1,    -1,
     339,    -1,   341,   342,   343,   344,    -1,   346,   347,   348,
     349,   350,    -1,   352,    -1,   354,   355,    -1,    -1,    -1,
      -1,   360,   361,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   300,   301,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,   335,    -1,    -1,    -1,   339,    -1,   341,   342,
     343,   344,    -1,   346,   347,   348,   349,   350,    -1,   352,
      -1,   354,   355,    -1,    -1,    -1,    -1,   360,   361,     3,
       4,     5,     6,     7,    -1,    -1,    -1,    -1,    12,    13,
      14,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    22,    23,
      24,    25,    26,    27,    28,    29,    -1,    31,    32,    33,
      34,    35,    36,    37,    38,    39,    -1,    41,    -1,    43,
      -1,    -1,    -1,    -1,    -1,    49,    50,    51,    52,    53,
      54,    55,    -1,    -1,    -1,    -1,    60,    61,    -1,    -1,
      -1,    65,    66,    67,    68,    69,    70,    71,    72,    73,
      74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
      84,    85,    86,    87,    88,     3,     4,     5,     6,     7,
      -1,    -1,    -1,    -1,    12,    13,    14,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    22,    23,    24,    25,    26,    27,
      28,    29,    -1,    31,    32,    33,    34,    35,    36,    37,
      38,    39,    -1,    41,    -1,    43,    -1,    -1,    -1,    -1,
      -1,    49,    50,    51,    52,    53,    54,    55,    -1,    -1,
      -1,    -1,    60,    61,    -1,    -1,    -1,    65,    66,    67,
      68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
      78,    79,    80,    81,    82,    83,    84,    85,    86,    87,
      88,     3,     4,     5,     6,     7,    -1,    -1,    -1,    -1,
      12,    13,    14,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      22,    23,    24,    25,    26,    27,    28,    29,    -1,    31,
      32,    33,    34,    35,    36,    37,    38,    39,    -1,    41,
      -1,    43,    -1,    -1,    -1,    -1,    -1,    49,    50,    51,
      52,    53,    54,    55,    -1,    -1,    -1,    -1,    60,    61,
      -1,    -1,    -1,    65,    66,    67,    68,    69,    70,    71,
      72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
      82,    83,    84,    85,    86,    87,    88,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,   300,   301,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,   335,    -1,    -1,    -1,   339,    -1,   341,   342,   343,
     344,    -1,   346,   347,   348,   349,   350,    -1,   352,    -1,
     354,   355,    -1,    -1,    -1,    -1,   360,   361,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,   300,   301,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   335,    -1,    -1,
      -1,   339,    -1,   341,   342,   343,   344,    -1,   346,   347,
     348,   349,   350,    -1,   352,    -1,   354,   355,    -1,    -1,
      -1,    -1,   360,   361,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   300,   301,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,   335,    -1,    -1,    -1,   339,    -1,   341,
     342,   343,   344,    -1,   346,   347,   348,   349,   350,    -1,
     352,    -1,   354,   355,    -1,    -1,    -1,    -1,   360,   361,
       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
      13,    14,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    22,
      23,    24,    25,    26,    27,    28,    29,    -1,    31,    32,
      33,    34,    35,    36,    37,    38,    39,    -1,    41,    -1,
      43,    -1,    -1,    -1,    47,    -1,    49,    50,    51,    52,
      53,    54,    55,    56,    -1,    -1,    59,    60,    61,    -1,
      -1,    -1,    65,    66,    67,    68,    69,    70,     3,     4,
       5,     6,     7,    -1,    -1,    -1,    -1,    12,    13,    14,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    22,    23,    24,
      25,    26,    27,    28,    29,    -1,    31,    32,    33,    34,
      35,    36,    37,    38,    39,    -1,    41,    -1,    43,    -1,
      -1,    -1,    -1,    -1,    49,    50,    51,    52,    53,    54,
      55,    -1,    -1,    -1,    -1,    60,    61,    -1,    -1,    -1,
      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
      75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
      85,    86,    87,    88,     3,     4,     5,     6,     7,     8,
       9,    10,    11,    12,    13,    14,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    22,    23,    24,    25,    26,    27,    28,
      29,    -1,    31,    32,    33,    34,    35,    36,    37,    38,
      39,    -1,    41,    -1,    43,    -1,    -1,    -1,    47,    -1,
      49,    50,    51,    52,    53,    54,    55,    56,    -1,    -1,
      59,    60,    61,    -1,    -1,    -1,    65,    66,    67,    68,
      69,    70,     1,    -1,     3,     4,     5,     6,     7,     8,
       9,    10,    11,    12,    13,    14,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    22,    23,    24,    25,    26,    27,    28,
      29,    -1,    31,    32,    33,    34,    35,    36,    37,    38,
      39,    -1,    41,    -1,    43,    -1,    -1,    -1,    47,    -1,
      49,    50,    51,    52,    53,    54,    55,    56,    -1,    -1,
      59,    60,    61,    -1,    -1,    -1,    65,    66,    67,    68,
      69,    70,    -1,    -1,    -1,    -1,    -1,   300,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,   316,   317,   318,   319,   320,   321,   322,
     323,   324,   325,   326,   327,   328,   329,   330,   331,   332,
     333,   334,   335,   336,   337,   338,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   350,    -1,    -1,
      -1,   354,   355,    -1,    -1,   358,    -1,    -1,   361,    -1,
      -1,    -1,    -1,    -1,    -1,   300,   301,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     335,    -1,    -1,    -1,   339,    -1,   341,   342,   343,   344,
      -1,   346,   347,   348,   349,   350,    -1,   352,    -1,   354,
     355,    -1,    -1,    -1,    -1,   360,   361,    -1,    -1,    -1,
      -1,    -1,    -1,     3,     4,     5,     6,     7,     8,     9,
      10,    11,    12,    13,    14,    -1,    -1,    -1,    -1,    -1,
      -1,   300,    22,    23,    24,    25,    26,    27,    28,    29,
      -1,    31,    32,    33,    34,    35,    36,    37,    38,    39,
      -1,    41,    -1,    43,    -1,    -1,    -1,    47,    -1,    49,
      50,    51,    52,    53,    54,    55,    56,    -1,    -1,    59,
      60,    61,    -1,    -1,    -1,    65,    66,    67,    68,    69,
      70,   350,    -1,    -1,    -1,   354,   355,    -1,    -1,   358,
      -1,    -1,   361,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,   300,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,   350,    -1,    -1,    -1,   354,   355,    -1,    -1,   358,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     300,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     350,    -1,    -1,    -1,   354,   355,    -1,    -1,   358
};

  /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
     symbol of state STATE-NUM.  */
static const yytype_uint16 yystos[] =
{
       0,     1,    17,    18,    38,    40,    42,    43,    44,    45,
      46,    58,    95,    96,    97,    98,    99,   100,   101,   102,
     103,   104,   105,   106,   107,   108,   109,   112,   113,   114,
     115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
     125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
     135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
     145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
     156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
     166,   167,   168,   169,   170,   171,   172,   173,   174,   175,
     176,   177,   178,   179,   180,   181,   182,   183,   184,   185,
     186,   187,   188,   189,   190,   191,   192,   193,   194,   195,
     196,   197,   198,   199,   200,   201,   202,   203,   204,   205,
     206,   207,   208,   209,   210,   211,   212,   213,   214,   215,
     216,   217,   218,   219,   220,   221,   222,   223,   224,   225,
     226,   227,   228,   229,   230,   231,   232,   233,   238,   239,
     240,   241,   242,   243,   244,   245,   246,   247,   248,   249,
     250,   251,   252,   253,   254,   255,   256,   257,   258,   259,
     260,   261,   262,   263,   264,   265,   266,   267,   268,   269,
     270,   271,   272,   273,   274,   275,   276,   277,   279,   280,
     285,   287,   288,   289,   290,   291,   292,   293,   294,   295,
     296,   297,   298,   299,   312,   313,   314,   350,   358,   365,
     368,   369,   370,   371,   372,   373,   374,   375,   386,   390,
     393,   394,   396,   397,   407,   408,   417,   315,     1,   363,
       1,   315,   315,   315,   315,   315,   315,   315,   315,   315,
     315,   315,   315,   315,   315,   315,   315,   315,   315,   315,
     315,   315,   315,   315,   315,   315,   315,     1,   315,     1,
     315,     1,   315,     1,   315,     1,   315,     1,   315,     1,
     315,     1,   315,     1,   315,     1,   315,     1,   315,     1,
     315,     1,   315,     1,   315,     1,   315,     1,   315,     1,
     315,     1,   315,     1,   315,     1,   315,     1,   315,     1,
     315,     1,   315,     1,   315,     1,   315,     1,   315,     1,
     315,     1,   315,     1,   315,     1,   315,     1,   315,     1,
     315,     1,   315,     1,   315,     1,   315,     1,   315,     1,
     315,   315,   315,   315,   315,   315,   315,   315,   315,   315,
     315,   315,   315,   315,   315,   315,   315,   315,   315,   315,
     315,   315,   315,   315,   315,   315,     1,   352,     1,   352,
       1,   315,   352,     1,   360,     1,   360,     1,   315,   352,
     315,   315,   315,   315,   315,   315,   315,   315,   315,   315,
     315,   315,   315,   315,   315,   315,   315,   315,   315,   315,
     315,   315,   315,   315,     1,   315,     1,   315,     1,   315,
       1,   315,   315,   315,   315,   315,   315,   315,   315,   315,
     315,   315,   315,   315,   315,   315,   315,   315,   315,   315,
     315,   315,   315,   315,   315,   315,   315,   315,   315,   315,
     315,   315,   315,   315,   315,   315,   315,   315,   315,   315,
     315,   315,   315,   315,   315,   315,   315,   315,   315,     1,
     315,   315,   315,   315,   315,   315,   315,   315,   315,   315,
     315,   315,   315,   315,   315,   345,   315,   315,   315,   315,
     315,   315,   315,   315,   315,   315,   315,   315,     1,   350,
     352,   387,   388,   389,     1,   389,   391,   392,     1,   352,
       1,   352,     1,   352,     0,     1,   370,    14,    15,   403,
     404,    16,   405,   406,    19,   411,   412,    20,   413,   414,
      21,   415,   416,   345,   363,   361,   349,   350,   352,   402,
       1,   349,     1,   349,     1,   349,     1,    89,    90,    91,
      92,   336,   379,     1,   335,   349,   385,     1,   349,     1,
     349,     1,   385,     1,   349,     1,   349,     1,   349,     1,
     349,     1,   350,     1,   352,     1,   349,     1,   352,     1,
     349,     1,   352,     1,   352,     1,   352,     1,   352,     1,
     349,   350,   351,   352,   353,   360,   363,   376,   378,   379,
     383,   384,   398,   399,   400,   401,   431,   432,     1,   384,
       1,   349,     1,   349,     1,   349,   349,   349,   349,   385,
     385,   385,   385,   349,   349,   349,   349,   349,   349,   349,
     349,   349,   349,   349,   349,   349,   349,   349,   349,   349,
     349,   349,   349,   352,   349,   349,   349,   349,   349,   349,
     349,   349,   349,     1,   385,     1,   349,     1,   352,     1,
     349,     1,   349,     1,   349,     1,   349,     1,   349,     1,
     352,     1,   349,     1,   349,     1,   385,     1,   385,     1,
     385,     1,   385,     1,   385,     1,   385,     1,   385,     1,
     385,     1,   385,     1,   349,     1,   349,     1,   352,     1,
     352,     1,   349,     1,   352,   352,   352,     1,   352,     1,
     349,     1,   349,     1,   350,   352,     1,   350,   352,     1,
     350,   352,     1,   350,   352,     1,   350,   352,     1,   349,
       1,   349,     1,   349,     1,   349,     1,   349,     1,   349,
       1,   385,     1,   385,     1,   385,     1,   350,   352,     1,
     349,     1,   349,     1,   349,     1,   349,   399,     1,   401,
       1,   349,     1,   349,   349,   349,   349,   349,     1,   349,
       1,   349,     1,   349,     1,   349,     1,   349,     1,   349,
       1,   349,     1,   349,     1,   349,     1,   349,     1,   349,
       1,   349,     1,   349,     1,   349,     1,   349,     1,   349,
       1,   349,     1,   349,     1,   234,   235,   236,   237,     1,
     349,     1,   349,     1,   349,     1,   349,     1,   352,     1,
     352,     1,   352,     1,   349,     1,   349,     1,   349,     1,
     376,     1,   349,     1,   349,     1,   349,     1,   349,     1,
     349,     1,   349,     1,   349,     1,   349,     1,   349,     1,
     349,     1,   349,     1,   349,     1,   349,     1,   349,     1,
     349,     1,   350,   352,     1,   349,   350,   349,     1,   349,
       1,   349,     1,   349,     1,   349,     1,   349,     1,   349,
       1,   349,     1,   352,     1,   349,     1,   349,     1,   349,
       1,   349,     1,   349,     1,   349,   281,   282,   283,   284,
     286,     1,   385,   349,   349,     1,   385,     1,   385,     1,
     349,     1,   349,     1,   349,     1,   349,     1,   349,     1,
     352,     1,   352,   357,   366,   357,     1,   363,     1,   361,
       1,   363,   361,     1,   363,   361,     1,   363,   361,     1,
     363,    58,   349,   350,   395,   349,   409,   364,   349,   345,
     376,   377,   400,   366,   366,   384,   110,   111,   335,   345,
     357,   357,   315,   315,   315,   315,   315,   387,   349,   391,
     402,     3,     4,     5,     6,     7,     8,     9,    10,    11,
      12,    13,    14,    22,    23,    24,    25,    26,    27,    28,
      29,    31,    32,    33,    34,    35,    36,    37,    38,    39,
      41,    43,    47,    49,    50,    51,    52,    53,    54,    55,
      56,    59,    60,    61,    65,    66,    67,    68,    69,    70,
     300,   350,   354,   355,   358,   433,   435,   436,   437,   441,
     442,   450,   451,   453,   454,   457,   458,   460,   464,   465,
     466,   470,   402,   435,   402,   435,   402,   435,   356,   315,
     364,   435,     1,   410,   349,   357,   359,   364,     1,   336,
     349,   381,   378,   376,   352,     1,   349,   431,     1,   431,
     352,   352,     1,   352,     1,   352,     1,   352,     1,   352,
       1,   352,   364,     1,   360,     1,   360,     1,   360,     1,
     360,     1,   360,    71,    72,    73,    74,    75,    76,    77,
      78,    79,    80,    81,    82,    83,    84,    85,    86,    87,
      88,   301,   335,   339,   341,   342,   343,   344,   346,   347,
     348,   352,   360,   361,   385,   423,   424,   425,   426,   427,
     428,   433,   445,   450,   451,   452,   453,   455,   457,   458,
     461,   462,   463,   360,   463,   360,   463,     1,   360,     1,
     360,     1,   360,   360,     1,   360,     1,   360,     1,   360,
       1,   360,     1,   360,     1,   360,     1,   360,     1,   360,
     360,     1,   360,     1,   360,     1,   360,     1,   360,   360,
     360,   360,   360,   360,   360,   463,     1,   360,     1,   360,
       1,   360,   360,   360,   360,   360,     1,   463,   463,     1,
     360,     1,   360,     1,   360,     1,   360,     1,   360,     1,
     467,     1,   358,     1,   362,   436,   302,   303,   304,   305,
     306,   307,   308,   309,   310,   350,   447,   448,   449,   315,
     459,   358,     1,   360,   358,   364,   362,   364,   362,   364,
     362,   364,     1,   349,   352,   345,   362,   361,   345,   377,
     366,   111,   366,   357,   357,   361,     1,    62,   350,   352,
     359,   398,   430,     1,    62,   352,   398,   430,     1,    62,
     352,   398,   430,     1,    62,   352,   398,   430,     1,    62,
     352,   398,   430,     1,   323,   324,   325,   328,   329,   418,
     420,   418,   418,     1,   418,   446,     1,   463,     1,   463,
       1,   463,   360,   360,   360,     1,   359,   451,   453,   457,
     458,   463,   464,     1,   435,     1,   420,     1,   330,   331,
     332,   333,   418,   419,     1,   420,   449,     1,   463,   316,
     317,   318,   319,   320,   321,   322,   323,   324,   325,   326,
     327,   328,   329,   330,   331,   332,   333,   334,   335,   336,
     337,   338,   421,   422,   359,   359,     1,   349,   352,     1,
     352,     1,   350,   463,   352,     1,   352,     1,   352,     1,
     352,     1,   352,     1,   349,     1,   349,   359,     1,   359,
     385,   359,     1,   352,     1,   352,     1,   352,     1,   352,
     359,   359,   359,     1,   349,   359,     1,   379,   361,   434,
     436,     1,   376,     1,   349,     1,   376,   379,   382,   359,
     359,   359,   359,   361,   434,     1,   352,     1,   352,   349,
     389,   349,   389,   349,   389,   360,   345,   363,   463,     1,
     352,   450,   451,   456,   458,   361,   361,   361,   361,   278,
     278,   395,   435,   349,   381,   352,   349,   352,   385,   352,
     354,   385,   435,   359,   357,   359,   357,   359,   357,   359,
     335,   345,   357,   359,   359,   357,   359,   357,   359,   357,
     359,   357,   359,   359,   357,   359,   357,   359,   357,   359,
     357,   359,   359,   357,   359,   357,   359,   357,   359,   357,
     359,   359,   357,   359,   357,   359,   357,   359,   357,   359,
       1,   350,   463,     1,    89,    90,    91,    92,    93,    94,
     336,   380,   463,     1,   380,   463,     1,   423,   427,   350,
     443,   444,     1,   463,     1,   463,     1,   463,   359,   359,
     359,   362,   362,     1,    87,   463,     1,   463,     1,   463,
       1,    87,   349,   350,   398,   429,   430,   463,   363,     1,
     463,     1,   463,     1,   463,     1,   463,   463,   463,   463,
       1,   463,     1,   463,     1,   463,     1,   463,     1,   463,
       1,   463,     1,   463,   359,   357,   359,   359,   357,   359,
     359,   359,   359,   359,   359,   359,   359,   359,   359,   359,
     359,   359,   359,   359,   359,   359,   359,   359,   359,   359,
     359,   359,   359,   359,   359,   359,   359,   359,   359,   435,
      48,   359,   359,   359,   359,   359,   366,   366,   359,     1,
      57,    58,   362,   439,   440,   359,   357,   359,   359,   359,
     359,   359,   359,   359,   359,   463,   468,   469,   448,   364,
     357,   359,   449,   357,   435,   435,   435,   435,   352,   352,
     315,   362,   345,   111,   359,   359,   359,   359,   359,   362,
      63,   349,   349,   349,     1,   350,     1,   350,   349,    63,
     349,   349,   349,   349,    63,   349,   349,   349,   349,    63,
     349,   349,   349,   349,    63,   349,   349,   349,   349,   363,
     345,   359,   359,   359,   359,   359,   357,   337,   385,   352,
     352,   362,   434,     1,   381,   376,   362,     1,   337,   438,
     463,   366,   362,   439,   349,   463,   357,   359,   389,     1,
     389,   362,   362,   362,   362,   349,   352,   349,   352,   359,
     359,   359,   359,   359,   359,   359,   359,   359,   359,   359,
     359,   359,   359,   359,   359,   359,   359,   359,   359,   359,
     359,   359,   359,   359,   352,   385,   443,   463,     1,   349,
     398,   364,   359,   359,   366,   366,     1,   438,   366,   435,
     359,   359,   469,   359,   359,   359,   364,   364,   357,   381,
     435,   366,   366,     1,   435,   463,   435,   435,   359
};

  /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
static const yytype_uint16 yyr1[] =
{
       0,   367,   368,   369,   369,   369,   370,   370,   370,   370,
     370,   371,   370,   372,   370,   370,   373,   370,   374,   370,
     375,   370,   370,   370,   376,   376,   376,   377,   377,   378,
     378,   379,   379,   379,   379,   379,   380,   380,   380,   380,
     380,   380,   380,   381,   381,   382,   382,   382,   382,   382,
     383,   383,   383,   383,   383,   384,   384,   385,   385,   386,
     386,   387,   387,   388,   388,   389,   389,   390,   390,   391,
     391,   392,   393,   393,   393,   393,   393,   393,   393,   393,
     393,   393,   393,   393,   393,   393,   393,   393,   393,   393,
     393,   393,   393,   393,   393,   393,   393,   393,   393,   393,
     393,   393,   393,   393,   393,   393,   393,   393,   393,   393,
     393,   393,   393,   393,   393,   393,   393,   393,   393,   393,
     393,   393,   393,   393,   393,   393,   393,   393,   393,   393,
     393,   393,   393,   393,   393,   393,   393,   393,   393,   393,
     393,   393,   393,   393,   393,   393,   393,   393,   393,   393,
     393,   393,   393,   393,   393,   393,   393,   393,   393,   393,
     393,   393,   393,   393,   393,   393,   393,   393,   393,   393,
     393,   393,   393,   393,   393,   393,   393,   393,   393,   393,
     393,   393,   393,   393,   393,   393,   393,   393,   393,   393,
     393,   393,   393,   393,   393,   393,   393,   393,   393,   393,
     393,   393,   393,   393,   393,   393,   393,   393,   393,   393,
     393,   393,   393,   393,   393,   393,   393,   393,   393,   393,
     393,   393,   393,   393,   393,   393,   393,   393,   393,   393,
     393,   393,   393,   393,   393,   393,   393,   393,   393,   393,
     393,   393,   393,   393,   393,   393,   393,   393,   393,   393,
     393,   393,   393,   393,   393,   393,   393,   393,   393,   393,
     393,   393,   393,   393,   393,   393,   393,   393,   393,   393,
     393,   393,   393,   393,   393,   393,   393,   393,   393,   393,
     393,   393,   393,   393,   393,   393,   393,   393,   393,   393,
     393,   393,   393,   393,   393,   393,   393,   393,   393,   393,
     393,   393,   393,   393,   393,   393,   393,   393,   393,   393,
     393,   393,   393,   393,   393,   393,   393,   393,   393,   393,
     393,   393,   393,   393,   393,   393,   393,   393,   393,   393,
     393,   393,   393,   393,   393,   393,   393,   393,   393,   393,
     393,   393,   393,   393,   393,   393,   393,   393,   393,   393,
     393,   393,   393,   393,   393,   393,   393,   393,   393,   393,
     393,   393,   393,   393,   393,   393,   393,   393,   393,   393,
     393,   393,   393,   393,   393,   393,   393,   393,   393,   393,
     393,   393,   393,   393,   393,   393,   393,   393,   393,   393,
     393,   393,   393,   393,   393,   393,   393,   393,   393,   393,
     393,   393,   393,   393,   393,   393,   393,   393,   393,   393,
     393,   393,   393,   393,   393,   393,   393,   393,   393,   393,
     393,   393,   393,   393,   393,   393,   393,   393,   393,   393,
     393,   393,   393,   393,   393,   393,   393,   393,   393,   393,
     393,   393,   393,   393,   393,   393,   393,   393,   393,   393,
     393,   393,   393,   393,   393,   393,   393,   393,   393,   393,
     393,   393,   393,   393,   393,   393,   393,   393,   393,   393,
     393,   393,   393,   393,   393,   393,   393,   393,   394,   394,
     395,   395,   395,   396,   396,   396,   396,   396,   396,   396,
     397,   397,   397,   397,   397,   397,   397,   397,   397,   397,
     397,   397,   397,   397,   397,   397,   397,   397,   397,   398,
     398,   399,   400,   401,   401,   402,   402,   402,   403,   403,
     404,   404,   404,   404,   405,   406,   406,   406,   407,   407,
     409,   408,   408,   408,   410,   408,   408,   411,   412,   412,
     412,   413,   414,   414,   414,   415,   416,   416,   417,   417,
     417,   417,   417,   417,   418,   418,   418,   418,   419,   419,
     419,   419,   420,   420,   421,   421,   421,   421,   421,   421,
     421,   422,   422,   422,   422,   423,   423,   423,   424,   424,
     424,   425,   425,   425,   425,   425,   426,   426,   427,   427,
     427,   428,   428,   428,   428,   428,   428,   428,   428,   428,
     428,   428,   428,   428,   428,   428,   428,   428,   428,   428,
     428,   428,   428,   428,   428,   428,   428,   428,   428,   428,
     429,   429,   429,   429,   430,   430,   430,   430,   430,   431,
     431,   431,   432,   432,   432,   432,   432,   433,   434,   434,
     435,   435,   435,   436,   436,   436,   436,   436,   436,   436,
     436,   437,   437,   438,   439,   439,   439,   439,   439,   439,
     439,   439,   439,   439,   439,   440,   440,   441,   441,   441,
     441,   442,   443,   443,   443,   444,   444,   446,   445,   447,
     447,   447,   447,   447,   447,   447,   447,   447,   448,   449,
     449,   450,   451,   452,   453,   454,   454,   455,   455,   455,
     456,   456,   456,   457,   458,   459,   460,   460,   460,   461,
     461,   461,   461,   461,   461,   461,   461,   461,   461,   461,
     461,   462,   462,   462,   463,   463,   463,   463,   463,   463,
     463,   463,   463,   463,   463,   463,   463,   463,   463,   463,
     463,   463,   463,   463,   463,   463,   463,   463,   463,   463,
     463,   463,   463,   463,   463,   463,   463,   463,   463,   463,
     463,   463,   463,   463,   463,   464,   465,   465,   465,   466,
     466,   466,   466,   466,   466,   466,   466,   466,   466,   466,
     466,   466,   466,   466,   466,   466,   466,   466,   466,   466,
     466,   466,   466,   466,   466,   466,   466,   466,   466,   466,
     466,   466,   466,   466,   466,   466,   466,   466,   466,   466,
     466,   466,   466,   466,   466,   466,   466,   466,   466,   466,
     466,   466,   466,   466,   466,   466,   466,   466,   466,   466,
     466,   466,   466,   466,   466,   466,   466,   466,   466,   466,
     466,   466,   466,   466,   466,   466,   466,   466,   466,   466,
     466,   466,   466,   466,   466,   466,   466,   466,   466,   466,
     466,   466,   466,   466,   466,   466,   466,   466,   466,   466,
     466,   466,   466,   466,   466,   466,   466,   466,   466,   466,
     466,   466,   466,   466,   466,   466,   466,   466,   466,   466,
     466,   466,   466,   466,   466,   466,   466,   466,   466,   466,
     466,   466,   466,   466,   466,   466,   466,   466,   466,   466,
     466,   466,   466,   466,   466,   466,   466,   466,   466,   466,
     466,   466,   466,   466,   467,   466,   466,   468,   468,   468,
     469,   470,   470,   470,   470,   470,   470,   470,   470,   470,
     470
};

  /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
static const yytype_uint8 yyr2[] =
{
       0,     2,     1,     2,     1,     2,     1,     1,     1,     1,
       1,     0,     2,     0,     2,     1,     0,     2,     0,     2,
       0,     2,     1,     1,     1,     1,     1,     1,     3,     3,
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
       1,     1,     1,     1,     1,     1,     3,     3,     5,     3,
       1,     3,     3,     5,     3,     1,     2,     1,     2,     2,
       2,     1,     3,     1,     3,     1,     1,     2,     2,     1,
       3,     1,     3,     3,     3,     3,     3,     3,     3,     3,
       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
       3,     3,     3,     3,     3,     2,     3,     2,     3,     2,
       3,     2,     3,     2,     3,     2,     3,     2,     3,     2,
       3,     2,     3,     2,     3,     2,     3,     2,     3,     2,
       3,     2,     3,     2,     3,     2,     3,     2,     3,     2,
       3,     2,     3,     2,     3,     2,     3,     2,     3,     2,
       3,     2,     3,     2,     3,     2,     3,     2,     3,     2,
       3,     2,     3,     2,     3,     2,     3,     2,     3,     2,
       3,     2,     3,     2,     3,     2,     3,     2,     3,     3,
       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
       3,     3,     3,     3,     3,     3,     3,     2,     3,     2,
       3,     2,     3,     2,     3,     3,     3,     3,     3,     3,
       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
       3,     3,     3,     3,     3,     3,     3,     3,     5,     7,
       9,     5,     7,     3,     3,     3,     3,     3,     3,     3,
       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
       3,     3,     3,     3,     3,     3,     3,     2,     3,     3,
       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
       3,     3,     3,     3,     5,     5,     5,     5,     5,     5,
       5,     5,     5,     5,     3,     3,     3,     3,     3,     3,
       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
       3,     3,     3,     3,     3,     3,     1,     2,     1,     1,
       1,     1,     1,     5,     5,     7,     7,     5,     8,     8,
       2,     2,     2,     2,     2,     2,     3,     3,     8,     8,
       2,     8,     8,     8,     2,     2,     2,     3,     3,     1,
       1,     7,     1,     1,     3,     1,     1,     1,     1,     1,
       4,     7,     2,     2,     1,     4,     7,     2,     1,     1,
       0,     5,     2,     2,     0,     8,     5,     1,     4,     7,
       2,     1,     4,     7,     2,     1,     7,     2,     2,     2,
       2,     2,     2,     2,     1,     1,     1,     1,     1,     1,
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
       1,     3,     3,     3,     2,     3,     3,     3,     2,     3,
       3,     3,     3,     2,     3,     3,     3,     3,     3,     3,
       3,     3,     3,     3,     3,     2,     3,     3,     3,     2,
       3,     3,     1,     3,     1,     3,     3,     3,     3,     1,
       1,     1,     1,     3,     3,     3,     3,     1,     1,     3,
       2,     1,     2,     2,     1,     1,     1,     2,     2,     1,
       2,     3,     5,     1,     4,     5,     3,     4,     3,     2,
       4,     5,     3,     4,     4,     2,     1,     5,     4,     2,
       5,     3,     1,     4,     4,     3,     1,     0,     3,     1,
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
       3,     1,     2,     5,     4,     1,     1,     1,     1,     1,
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
       1,     1,     1,     1,     1,     1,     1,     3,     3,     3,
       3,     1,     1,     1,     1,     2,     2,     2,     3,     3,
       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
       3,     3,     3,     4,     4,     2,     8,     2,     2,     2,
       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
       3,     4,     4,     4,     2,     3,     1,     1,     1,     3,
       4,     4,     4,     6,     6,     6,     6,     6,     4,     2,
       4,     4,     4,     4,     6,     6,     6,     6,     6,     4,
       2,     4,     4,     4,     4,     6,     6,     6,     6,     6,
       4,     2,     4,     4,     4,     4,     6,     6,     6,     6,
       6,     4,     2,     4,     4,     4,     4,     6,     6,     6,
       6,     6,     4,     2,     4,     4,     6,     2,     4,     4,
       4,     2,     4,     4,     2,     4,     4,     2,     6,     6,
       6,     4,     2,     6,     2,     4,     4,     4,     2,     4,
       4,     4,     2,     4,     4,     2,     4,     4,     2,     4,
       4,     2,     4,     3,     2,     4,     3,     2,     4,     3,
       4,     2,     4,     4,     2,     4,     4,     2,     4,     4,
       2,     4,     4,     2,     4,     4,     2,     4,     3,     1,
       3,     1,     3,     1,     4,     3,     1,     4,     4,     4,
       4,     4,     2,     4,     4,     2,     4,     4,     2,     3,
       1,     3,     1,     3,     1,     3,     1,     6,     6,     2,
       4,     4,     2,     4,     0,     5,     2,     0,     3,     1,
       1,     3,     2,     1,     3,     2,     1,     1,     3,     2,
       1
};


#define yyerrok         (yyerrstatus = 0)
#define yyclearin       (yychar = YYEMPTY)
#define YYEMPTY         (-2)
#define YYEOF           0

#define YYACCEPT        goto yyacceptlab
#define YYABORT         goto yyabortlab
#define YYERROR         goto yyerrorlab


#define YYRECOVERING()  (!!yyerrstatus)

#define YYBACKUP(Token, Value)                                  \
do                                                              \
  if (yychar == YYEMPTY)                                        \
    {                                                           \
      yychar = (Token);                                         \
      yylval = (Value);                                         \
      YYPOPSTACK (yylen);                                       \
      yystate = *yyssp;                                         \
      goto yybackup;                                            \
    }                                                           \
  else                                                          \
    {                                                           \
      yyerror (YY_("syntax error: cannot back up")); \
      YYERROR;                                                  \
    }                                                           \
while (0)

/* Error token number */
#define YYTERROR        1
#define YYERRCODE       256



/* Enable debugging if requested.  */
#if YYDEBUG

# ifndef YYFPRINTF
#  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
#  define YYFPRINTF fprintf
# endif

# define YYDPRINTF(Args)                        \
do {                                            \
  if (yydebug)                                  \
    YYFPRINTF Args;                             \
} while (0)

/* This macro is provided for backward compatibility. */
#ifndef YY_LOCATION_PRINT
# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
#endif


# define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
do {                                                                      \
  if (yydebug)                                                            \
    {                                                                     \
      YYFPRINTF (stderr, "%s ", Title);                                   \
      yy_symbol_print (stderr,                                            \
                  Type, Value); \
      YYFPRINTF (stderr, "\n");                                           \
    }                                                                     \
} while (0)


/*----------------------------------------.
| Print this symbol's value on YYOUTPUT.  |
`----------------------------------------*/

static void
yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
{
  FILE *yyo = yyoutput;
  YYUSE (yyo);
  if (!yyvaluep)
    return;
# ifdef YYPRINT
  if (yytype < YYNTOKENS)
    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
# endif
  YYUSE (yytype);
}


/*--------------------------------.
| Print this symbol on YYOUTPUT.  |
`--------------------------------*/

static void
yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
{
  YYFPRINTF (yyoutput, "%s %s (",
             yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);

  yy_symbol_value_print (yyoutput, yytype, yyvaluep);
  YYFPRINTF (yyoutput, ")");
}

/*------------------------------------------------------------------.
| yy_stack_print -- Print the state stack from its BOTTOM up to its |
| TOP (included).                                                   |
`------------------------------------------------------------------*/

static void
yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
{
  YYFPRINTF (stderr, "Stack now");
  for (; yybottom <= yytop; yybottom++)
    {
      int yybot = *yybottom;
      YYFPRINTF (stderr, " %d", yybot);
    }
  YYFPRINTF (stderr, "\n");
}

# define YY_STACK_PRINT(Bottom, Top)                            \
do {                                                            \
  if (yydebug)                                                  \
    yy_stack_print ((Bottom), (Top));                           \
} while (0)


/*------------------------------------------------.
| Report that the YYRULE is going to be reduced.  |
`------------------------------------------------*/

static void
yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule)
{
  unsigned long int yylno = yyrline[yyrule];
  int yynrhs = yyr2[yyrule];
  int yyi;
  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
             yyrule - 1, yylno);
  /* The symbols being reduced.  */
  for (yyi = 0; yyi < yynrhs; yyi++)
    {
      YYFPRINTF (stderr, "   $%d = ", yyi + 1);
      yy_symbol_print (stderr,
                       yystos[yyssp[yyi + 1 - yynrhs]],
                       &(yyvsp[(yyi + 1) - (yynrhs)])
                                              );
      YYFPRINTF (stderr, "\n");
    }
}

# define YY_REDUCE_PRINT(Rule)          \
do {                                    \
  if (yydebug)                          \
    yy_reduce_print (yyssp, yyvsp, Rule); \
} while (0)

/* Nonzero means print parse trace.  It is left uninitialized so that
   multiple parsers can coexist.  */
int yydebug;
#else /* !YYDEBUG */
# define YYDPRINTF(Args)
# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
# define YY_STACK_PRINT(Bottom, Top)
# define YY_REDUCE_PRINT(Rule)
#endif /* !YYDEBUG */


/* YYINITDEPTH -- initial size of the parser's stacks.  */
#ifndef YYINITDEPTH
# define YYINITDEPTH 200
#endif

/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
   if the built-in stack extension method is used).

   Do not make this value too large; the results are undefined if
   YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
   evaluated with infinite-precision integer arithmetic.  */

#ifndef YYMAXDEPTH
# define YYMAXDEPTH 10000
#endif


#if YYERROR_VERBOSE

# ifndef yystrlen
#  if defined __GLIBC__ && defined _STRING_H
#   define yystrlen strlen
#  else
/* Return the length of YYSTR.  */
static YYSIZE_T
yystrlen (const char *yystr)
{
  YYSIZE_T yylen;
  for (yylen = 0; yystr[yylen]; yylen++)
    continue;
  return yylen;
}
#  endif
# endif

# ifndef yystpcpy
#  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
#   define yystpcpy stpcpy
#  else
/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
   YYDEST.  */
static char *
yystpcpy (char *yydest, const char *yysrc)
{
  char *yyd = yydest;
  const char *yys = yysrc;

  while ((*yyd++ = *yys++) != '\0')
    continue;

  return yyd - 1;
}
#  endif
# endif

# ifndef yytnamerr
/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
   quotes and backslashes, so that it's suitable for yyerror.  The
   heuristic is that double-quoting is unnecessary unless the string
   contains an apostrophe, a comma, or backslash (other than
   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
   null, do not copy; instead, return the length of what the result
   would have been.  */
static YYSIZE_T
yytnamerr (char *yyres, const char *yystr)
{
  if (*yystr == '"')
    {
      YYSIZE_T yyn = 0;
      char const *yyp = yystr;

      for (;;)
        switch (*++yyp)
          {
          case '\'':
          case ',':
            goto do_not_strip_quotes;

          case '\\':
            if (*++yyp != '\\')
              goto do_not_strip_quotes;
            /* Fall through.  */
          default:
            if (yyres)
              yyres[yyn] = *yyp;
            yyn++;
            break;

          case '"':
            if (yyres)
              yyres[yyn] = '\0';
            return yyn;
          }
    do_not_strip_quotes: ;
    }

  if (! yyres)
    return yystrlen (yystr);

  return yystpcpy (yyres, yystr) - yyres;
}
# endif

/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
   about the unexpected token YYTOKEN for the state stack whose top is
   YYSSP.

   Return 0 if *YYMSG was successfully written.  Return 1 if *YYMSG is
   not large enough to hold the message.  In that case, also set
   *YYMSG_ALLOC to the required number of bytes.  Return 2 if the
   required number of bytes is too large to store.  */
static int
yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
                yytype_int16 *yyssp, int yytoken)
{
  YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
  YYSIZE_T yysize = yysize0;
  enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
  /* Internationalized format string. */
  const char *yyformat = YY_NULLPTR;
  /* Arguments of yyformat. */
  char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
  /* Number of reported tokens (one for the "unexpected", one per
     "expected"). */
  int yycount = 0;

  /* There are many possibilities here to consider:
     - If this state is a consistent state with a default action, then
       the only way this function was invoked is if the default action
       is an error action.  In that case, don't check for expected
       tokens because there are none.
     - The only way there can be no lookahead present (in yychar) is if
       this state is a consistent state with a default action.  Thus,
       detecting the absence of a lookahead is sufficient to determine
       that there is no unexpected or expected token to report.  In that
       case, just report a simple "syntax error".
     - Don't assume there isn't a lookahead just because this state is a
       consistent state with a default action.  There might have been a
       previous inconsistent state, consistent state with a non-default
       action, or user semantic action that manipulated yychar.
     - Of course, the expected token list depends on states to have
       correct lookahead information, and it depends on the parser not
       to perform extra reductions after fetching a lookahead from the
       scanner and before detecting a syntax error.  Thus, state merging
       (from LALR or IELR) and default reductions corrupt the expected
       token list.  However, the list is correct for canonical LR with
       one exception: it will still contain any token that will not be
       accepted due to an error action in a later state.
  */
  if (yytoken != YYEMPTY)
    {
      int yyn = yypact[*yyssp];
      yyarg[yycount++] = yytname[yytoken];
      if (!yypact_value_is_default (yyn))
        {
          /* Start YYX at -YYN if negative to avoid negative indexes in
             YYCHECK.  In other words, skip the first -YYN actions for
             this state because they are default actions.  */
          int yyxbegin = yyn < 0 ? -yyn : 0;
          /* Stay within bounds of both yycheck and yytname.  */
          int yychecklim = YYLAST - yyn + 1;
          int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
          int yyx;

          for (yyx = yyxbegin; yyx < yyxend; ++yyx)
            if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
                && !yytable_value_is_error (yytable[yyx + yyn]))
              {
                if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
                  {
                    yycount = 1;
                    yysize = yysize0;
                    break;
                  }
                yyarg[yycount++] = yytname[yyx];
                {
                  YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
                  if (! (yysize <= yysize1
                         && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
                    return 2;
                  yysize = yysize1;
                }
              }
        }
    }

  switch (yycount)
    {
# define YYCASE_(N, S)                      \
      case N:                               \
        yyformat = S;                       \
      break
      YYCASE_(0, YY_("syntax error"));
      YYCASE_(1, YY_("syntax error, unexpected %s"));
      YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
      YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
      YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
      YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
# undef YYCASE_
    }

  {
    YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
    if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
      return 2;
    yysize = yysize1;
  }

  if (*yymsg_alloc < yysize)
    {
      *yymsg_alloc = 2 * yysize;
      if (! (yysize <= *yymsg_alloc
             && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
        *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
      return 1;
    }

  /* Avoid sprintf, as that infringes on the user's name space.
     Don't have undefined behavior even if the translation
     produced a string with the wrong number of "%s"s.  */
  {
    char *yyp = *yymsg;
    int yyi = 0;
    while ((*yyp = *yyformat) != '\0')
      if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
        {
          yyp += yytnamerr (yyp, yyarg[yyi++]);
          yyformat += 2;
        }
      else
        {
          yyp++;
          yyformat++;
        }
  }
  return 0;
}
#endif /* YYERROR_VERBOSE */

/*-----------------------------------------------.
| Release the memory associated to this symbol.  |
`-----------------------------------------------*/

static void
yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
{
  YYUSE (yyvaluep);
  if (!yymsg)
    yymsg = "Deleting";
  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);

  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
  YYUSE (yytype);
  YY_IGNORE_MAYBE_UNINITIALIZED_END
}




/* The lookahead symbol.  */
int yychar;

/* The semantic value of the lookahead symbol.  */
YYSTYPE yylval;
/* Number of syntax errors so far.  */
int yynerrs;


/*----------.
| yyparse.  |
`----------*/

int
yyparse (void)
{
    int yystate;
    /* Number of tokens to shift before error messages enabled.  */
    int yyerrstatus;

    /* The stacks and their tools:
       'yyss': related to states.
       'yyvs': related to semantic values.

       Refer to the stacks through separate pointers, to allow yyoverflow
       to reallocate them elsewhere.  */

    /* The state stack.  */
    yytype_int16 yyssa[YYINITDEPTH];
    yytype_int16 *yyss;
    yytype_int16 *yyssp;

    /* The semantic value stack.  */
    YYSTYPE yyvsa[YYINITDEPTH];
    YYSTYPE *yyvs;
    YYSTYPE *yyvsp;

    YYSIZE_T yystacksize;

  int yyn;
  int yyresult;
  /* Lookahead token as an internal (translated) token number.  */
  int yytoken = 0;
  /* The variables used to return semantic value and location from the
     action routines.  */
  YYSTYPE yyval;

#if YYERROR_VERBOSE
  /* Buffer for error messages, and its allocated size.  */
  char yymsgbuf[128];
  char *yymsg = yymsgbuf;
  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
#endif

#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))

  /* The number of symbols on the RHS of the reduced rule.
     Keep to zero when no symbol should be popped.  */
  int yylen = 0;

  yyssp = yyss = yyssa;
  yyvsp = yyvs = yyvsa;
  yystacksize = YYINITDEPTH;

  YYDPRINTF ((stderr, "Starting parse\n"));

  yystate = 0;
  yyerrstatus = 0;
  yynerrs = 0;
  yychar = YYEMPTY; /* Cause a token to be read.  */
  goto yysetstate;

/*------------------------------------------------------------.
| yynewstate -- Push a new state, which is found in yystate.  |
`------------------------------------------------------------*/
 yynewstate:
  /* In all cases, when you get here, the value and location stacks
     have just been pushed.  So pushing a state here evens the stacks.  */
  yyssp++;

 yysetstate:
  *yyssp = yystate;

  if (yyss + yystacksize - 1 <= yyssp)
    {
      /* Get the current used size of the three stacks, in elements.  */
      YYSIZE_T yysize = yyssp - yyss + 1;

#ifdef yyoverflow
      {
        /* Give user a chance to reallocate the stack.  Use copies of
           these so that the &'s don't force the real ones into
           memory.  */
        YYSTYPE *yyvs1 = yyvs;
        yytype_int16 *yyss1 = yyss;

        /* Each stack pointer address is followed by the size of the
           data in use in that stack, in bytes.  This used to be a
           conditional around just the two extra args, but that might
           be undefined if yyoverflow is a macro.  */
        yyoverflow (YY_("memory exhausted"),
                    &yyss1, yysize * sizeof (*yyssp),
                    &yyvs1, yysize * sizeof (*yyvsp),
                    &yystacksize);

        yyss = yyss1;
        yyvs = yyvs1;
      }
#else /* no yyoverflow */
# ifndef YYSTACK_RELOCATE
      goto yyexhaustedlab;
# else
      /* Extend the stack our own way.  */
      if (YYMAXDEPTH <= yystacksize)
        goto yyexhaustedlab;
      yystacksize *= 2;
      if (YYMAXDEPTH < yystacksize)
        yystacksize = YYMAXDEPTH;

      {
        yytype_int16 *yyss1 = yyss;
        union yyalloc *yyptr =
          (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
        if (! yyptr)
          goto yyexhaustedlab;
        YYSTACK_RELOCATE (yyss_alloc, yyss);
        YYSTACK_RELOCATE (yyvs_alloc, yyvs);
#  undef YYSTACK_RELOCATE
        if (yyss1 != yyssa)
          YYSTACK_FREE (yyss1);
      }
# endif
#endif /* no yyoverflow */

      yyssp = yyss + yysize - 1;
      yyvsp = yyvs + yysize - 1;

      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
                  (unsigned long int) yystacksize));

      if (yyss + yystacksize - 1 <= yyssp)
        YYABORT;
    }

  YYDPRINTF ((stderr, "Entering state %d\n", yystate));

  if (yystate == YYFINAL)
    YYACCEPT;

  goto yybackup;

/*-----------.
| yybackup.  |
`-----------*/
yybackup:

  /* Do appropriate processing given the current state.  Read a
     lookahead token if we need one and don't already have one.  */

  /* First try to decide what to do without reference to lookahead token.  */
  yyn = yypact[yystate];
  if (yypact_value_is_default (yyn))
    goto yydefault;

  /* Not known => get a lookahead token if don't already have one.  */

  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
  if (yychar == YYEMPTY)
    {
      YYDPRINTF ((stderr, "Reading a token: "));
      yychar = yylex ();
    }

  if (yychar <= YYEOF)
    {
      yychar = yytoken = YYEOF;
      YYDPRINTF ((stderr, "Now at end of input.\n"));
    }
  else
    {
      yytoken = YYTRANSLATE (yychar);
      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
    }

  /* If the proper action on seeing token YYTOKEN is to reduce or to
     detect an error, take that action.  */
  yyn += yytoken;
  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
    goto yydefault;
  yyn = yytable[yyn];
  if (yyn <= 0)
    {
      if (yytable_value_is_error (yyn))
        goto yyerrlab;
      yyn = -yyn;
      goto yyreduce;
    }

  /* Count tokens shifted since error; after three, turn off error
     status.  */
  if (yyerrstatus)
    yyerrstatus--;

  /* Shift the lookahead token.  */
  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);

  /* Discard the shifted token.  */
  yychar = YYEMPTY;

  yystate = yyn;
  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
  *++yyvsp = yylval;
  YY_IGNORE_MAYBE_UNINITIALIZED_END

  goto yynewstate;


/*-----------------------------------------------------------.
| yydefault -- do the default action for the current state.  |
`-----------------------------------------------------------*/
yydefault:
  yyn = yydefact[yystate];
  if (yyn == 0)
    goto yyerrlab;
  goto yyreduce;


/*-----------------------------.
| yyreduce -- Do a reduction.  |
`-----------------------------*/
yyreduce:
  /* yyn is the number of a rule to reduce with.  */
  yylen = yyr2[yyn];

  /* If YYLEN is nonzero, implement the default value of the action:
     '$$ = $1'.

     Otherwise, the following line sets YYVAL to garbage.
     This behavior is undocumented and Bison
     users should not rely upon it.  Assigning to YYVAL
     unconditionally makes the parser a bit smaller, and it avoids a
     GCC warning that YYVAL may be used uninitialized.  */
  yyval = yyvsp[1-yylen];


  YY_REDUCE_PRINT (yyn);
  switch (yyn)
    {
        case 3:
#line 647 "core/cfg.y" /* yacc.c:1646  */
    {}
#line 5227 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 4:
#line 648 "core/cfg.y" /* yacc.c:1646  */
    {}
#line 5233 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 5:
#line 649 "core/cfg.y" /* yacc.c:1646  */
    { yyerror(""); YYABORT;}
#line 5239 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 11:
#line 657 "core/cfg.y" /* yacc.c:1646  */
    {rt=REQUEST_ROUTE;}
#line 5245 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 13:
#line 658 "core/cfg.y" /* yacc.c:1646  */
    {rt=FAILURE_ROUTE;}
#line 5251 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 16:
#line 660 "core/cfg.y" /* yacc.c:1646  */
    {rt=BRANCH_ROUTE;}
#line 5257 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 18:
#line 661 "core/cfg.y" /* yacc.c:1646  */
    {rt=ONSEND_ROUTE;}
#line 5263 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 20:
#line 662 "core/cfg.y" /* yacc.c:1646  */
    {rt=EVENT_ROUTE;}
#line 5269 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 24:
#line 667 "core/cfg.y" /* yacc.c:1646  */
    {
		if ((yyvsp[0].ipaddr)){
			tmp=ip_addr2a((yyvsp[0].ipaddr));
			if (tmp==0) {
				LM_CRIT("cfg. parser: bad ip address.\n");
				(yyval.strval)=0;
			} else {
				(yyval.strval)=pkg_malloc(strlen(tmp)+1);
				if ((yyval.strval)==0) {
					PKG_MEM_CRITICAL;
				} else {
					strncpy((yyval.strval), tmp, strlen(tmp)+1);
				}
			}
		}
	}
#line 5290 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 25:
#line 683 "core/cfg.y" /* yacc.c:1646  */
    {
		(yyval.strval)=pkg_malloc(strlen((yyvsp[0].strval))+1);
		if ((yyval.strval)==0) {
				PKG_MEM_CRITICAL;
		} else {
				strncpy((yyval.strval), (yyvsp[0].strval), strlen((yyvsp[0].strval))+1);
		}
	}
#line 5303 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 26:
#line 691 "core/cfg.y" /* yacc.c:1646  */
    {
		if ((yyvsp[0].strval)){
			(yyval.strval)=pkg_malloc(strlen((yyvsp[0].strval))+1);
			if ((yyval.strval)==0) {
					PKG_MEM_CRITICAL;
			} else {
					strncpy((yyval.strval), (yyvsp[0].strval), strlen((yyvsp[0].strval))+1);
			}
		}
	}
#line 5318 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 27:
#line 705 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.name_l)=mk_name_lst((yyvsp[0].strval), SI_IS_MHOMED); }
#line 5324 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 28:
#line 706 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.name_l)=mk_name_lst((yyvsp[-2].strval), SI_IS_MHOMED);
										if ((yyval.name_l)) (yyval.name_l)->next=(yyvsp[0].name_l);
									}
#line 5332 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 29:
#line 712 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.name_l)=(yyvsp[-1].name_l); }
#line 5338 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 30:
#line 713 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.name_l)=mk_name_lst((yyvsp[0].strval), 0); }
#line 5344 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 31:
#line 717 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.intval)=PROTO_UDP; }
#line 5350 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 32:
#line 718 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.intval)=PROTO_TCP; }
#line 5356 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 33:
#line 719 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.intval)=PROTO_TLS; }
#line 5362 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 34:
#line 720 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.intval)=PROTO_SCTP; }
#line 5368 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 35:
#line 721 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.intval)=0; }
#line 5374 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 36:
#line 724 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.intval)=PROTO_UDP; }
#line 5380 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 37:
#line 725 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.intval)=PROTO_TCP; }
#line 5386 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 38:
#line 726 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.intval)=PROTO_TLS; }
#line 5392 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 39:
#line 727 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.intval)=PROTO_SCTP; }
#line 5398 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 40:
#line 728 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.intval)=PROTO_WS; }
#line 5404 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 41:
#line 729 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.intval)=PROTO_WSS; }
#line 5410 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 42:
#line 730 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.intval)=0; }
#line 5416 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 43:
#line 733 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.intval)=(yyvsp[0].intval); }
#line 5422 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 44:
#line 734 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.intval)=0; }
#line 5428 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 45:
#line 737 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.sockid)=mk_listen_id((yyvsp[0].strval), 0, 0); }
#line 5434 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 46:
#line 738 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.sockid)=mk_listen_id((yyvsp[-2].strval), 0, (yyvsp[0].intval)); }
#line 5440 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 47:
#line 739 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.sockid)=mk_listen_id((yyvsp[0].strval), (yyvsp[-2].intval), 0); }
#line 5446 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 48:
#line 740 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.sockid)=mk_listen_id((yyvsp[-2].strval), (yyvsp[-4].intval), (yyvsp[0].intval));}
#line 5452 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 49:
#line 741 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.sockid)=0; yyerror("port number expected"); }
#line 5458 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 50:
#line 745 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.sockid)=mk_listen_id2((yyvsp[0].name_l), 0, 0); }
#line 5464 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 51:
#line 746 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.sockid)=mk_listen_id2((yyvsp[-2].name_l), 0, (yyvsp[0].intval)); }
#line 5470 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 52:
#line 747 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.sockid)=mk_listen_id2((yyvsp[0].name_l), (yyvsp[-2].intval), 0); }
#line 5476 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 53:
#line 748 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.sockid)=mk_listen_id2((yyvsp[-2].name_l), (yyvsp[-4].intval), (yyvsp[0].intval));}
#line 5482 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 54:
#line 749 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.sockid)=0; yyerror("port number expected"); }
#line 5488 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 55:
#line 753 "core/cfg.y" /* yacc.c:1646  */
    {  (yyval.sockid)=(yyvsp[0].sockid) ; }
#line 5494 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 56:
#line 754 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.sockid)=(yyvsp[-1].sockid);  if ((yyval.sockid)) (yyval.sockid)->next=(yyvsp[0].sockid); }
#line 5500 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 58:
#line 758 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.intval)=-(yyvsp[0].intval); }
#line 5506 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 60:
#line 762 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("flag list expected\n"); }
#line 5512 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 63:
#line 768 "core/cfg.y" /* yacc.c:1646  */
    { if (register_flag((yyvsp[0].strval),-1)<0)
								yyerror("register flag failed");
						}
#line 5520 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 64:
#line 771 "core/cfg.y" /* yacc.c:1646  */
    {
						if (register_flag((yyvsp[-2].strval), (yyvsp[0].intval))<0)
								yyerror("register flag failed");
										}
#line 5529 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 65:
#line 777 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.strval)=(yyvsp[0].strval); }
#line 5535 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 66:
#line 778 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.strval)=(yyvsp[0].strval); }
#line 5541 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 68:
#line 783 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("avpflag list expected\n"); }
#line 5547 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 71:
#line 790 "core/cfg.y" /* yacc.c:1646  */
    {
		if (register_avpflag((yyvsp[0].strval))==0)
			yyerror("cannot declare avpflag");
	}
#line 5556 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 72:
#line 796 "core/cfg.y" /* yacc.c:1646  */
    { default_core_cfg.debug=(yyvsp[0].intval); }
#line 5562 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 73:
#line 797 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number  expected"); }
#line 5568 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 74:
#line 798 "core/cfg.y" /* yacc.c:1646  */
    { dont_fork= ! (yyvsp[0].intval); }
#line 5574 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 75:
#line 799 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("boolean value expected"); }
#line 5580 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 76:
#line 800 "core/cfg.y" /* yacc.c:1646  */
    { set_fork_delay((yyvsp[0].intval)); }
#line 5586 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 77:
#line 801 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number expected"); }
#line 5592 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 78:
#line 802 "core/cfg.y" /* yacc.c:1646  */
    { set_modinit_delay((yyvsp[0].intval)); }
#line 5598 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 79:
#line 803 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number expected"); }
#line 5604 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 80:
#line 804 "core/cfg.y" /* yacc.c:1646  */
    { if (!config_check)  /* if set from cmd line, don't overwrite from yyparse()*/
					if(log_stderr == 0) log_stderr=(yyvsp[0].intval);
				   }
#line 5612 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 81:
#line 807 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("boolean value expected"); }
#line 5618 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 82:
#line 808 "core/cfg.y" /* yacc.c:1646  */
    {
		if ( (i_tmp=str2facility((yyvsp[0].strval)))==-1)
			yyerror("bad facility (see syslog(3) man page)");
		if (!config_check)
			default_core_cfg.log_facility=i_tmp;
	}
#line 5629 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 83:
#line 814 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("ID expected"); }
#line 5635 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 84:
#line 815 "core/cfg.y" /* yacc.c:1646  */
    { log_name=(yyvsp[0].strval); }
#line 5641 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 85:
#line 816 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("string value expected"); }
#line 5647 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 86:
#line 817 "core/cfg.y" /* yacc.c:1646  */
    { log_color=(yyvsp[0].intval); }
#line 5653 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 87:
#line 818 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("boolean value expected"); }
#line 5659 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 88:
#line 819 "core/cfg.y" /* yacc.c:1646  */
    { log_prefix_fmt=(yyvsp[0].strval); }
#line 5665 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 89:
#line 820 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("string value expected"); }
#line 5671 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 90:
#line 821 "core/cfg.y" /* yacc.c:1646  */
    { log_prefix_mode=(yyvsp[0].intval); }
#line 5677 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 91:
#line 822 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number expected"); }
#line 5683 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 92:
#line 823 "core/cfg.y" /* yacc.c:1646  */
    { _km_log_engine_type=(yyvsp[0].strval); }
#line 5689 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 93:
#line 824 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("string value expected"); }
#line 5695 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 94:
#line 825 "core/cfg.y" /* yacc.c:1646  */
    { _km_log_engine_data=(yyvsp[0].strval); }
#line 5701 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 95:
#line 826 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("string value expected"); }
#line 5707 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 96:
#line 827 "core/cfg.y" /* yacc.c:1646  */
    { _ksr_xavp_via_params.s=(yyvsp[0].strval);
			_ksr_xavp_via_params.len=strlen((yyvsp[0].strval));
		}
#line 5715 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 97:
#line 830 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("string value expected"); }
#line 5721 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 98:
#line 831 "core/cfg.y" /* yacc.c:1646  */
    { _ksr_xavp_via_params.s=(yyvsp[0].strval);
			_ksr_xavp_via_fields.len=strlen((yyvsp[0].strval));
		}
#line 5729 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 99:
#line 834 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("string value expected"); }
#line 5735 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 100:
#line 835 "core/cfg.y" /* yacc.c:1646  */
    { received_dns|= ((yyvsp[0].intval))?DO_DNS:0; }
#line 5741 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 101:
#line 836 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("boolean value expected"); }
#line 5747 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 102:
#line 837 "core/cfg.y" /* yacc.c:1646  */
    { received_dns|= ((yyvsp[0].intval))?DO_REV_DNS:0; }
#line 5753 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 103:
#line 838 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("boolean value expected"); }
#line 5759 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 104:
#line 839 "core/cfg.y" /* yacc.c:1646  */
    { default_core_cfg.dns_try_ipv6=(yyvsp[0].intval); }
#line 5765 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 105:
#line 840 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("boolean value expected"); }
#line 5771 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 106:
#line 841 "core/cfg.y" /* yacc.c:1646  */
    { IF_NAPTR(default_core_cfg.dns_try_naptr=(yyvsp[0].intval)); }
#line 5777 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 107:
#line 842 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("boolean value expected"); }
#line 5783 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 108:
#line 843 "core/cfg.y" /* yacc.c:1646  */
    { IF_DNS_FAILOVER(default_core_cfg.dns_srv_lb=(yyvsp[0].intval)); }
#line 5789 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 109:
#line 844 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("boolean value expected"); }
#line 5795 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 110:
#line 845 "core/cfg.y" /* yacc.c:1646  */
    { IF_NAPTR(default_core_cfg.dns_udp_pref=(yyvsp[0].intval));}
#line 5801 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 111:
#line 846 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number expected"); }
#line 5807 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 112:
#line 847 "core/cfg.y" /* yacc.c:1646  */
    { IF_NAPTR(default_core_cfg.dns_tcp_pref=(yyvsp[0].intval));}
#line 5813 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 113:
#line 848 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number expected"); }
#line 5819 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 114:
#line 849 "core/cfg.y" /* yacc.c:1646  */
    { IF_NAPTR(default_core_cfg.dns_tls_pref=(yyvsp[0].intval));}
#line 5825 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 115:
#line 850 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number expected"); }
#line 5831 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 116:
#line 851 "core/cfg.y" /* yacc.c:1646  */
    {
								IF_NAPTR(default_core_cfg.dns_sctp_pref=(yyvsp[0].intval)); }
#line 5838 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 117:
#line 853 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number expected"); }
#line 5844 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 118:
#line 854 "core/cfg.y" /* yacc.c:1646  */
    { default_core_cfg.dns_retr_time=(yyvsp[0].intval); }
#line 5850 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 119:
#line 855 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number expected"); }
#line 5856 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 120:
#line 856 "core/cfg.y" /* yacc.c:1646  */
    { default_core_cfg.dns_slow_query_ms=(yyvsp[0].intval); }
#line 5862 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 121:
#line 857 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number expected"); }
#line 5868 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 122:
#line 858 "core/cfg.y" /* yacc.c:1646  */
    { default_core_cfg.dns_retr_no=(yyvsp[0].intval); }
#line 5874 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 123:
#line 859 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number expected"); }
#line 5880 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 124:
#line 860 "core/cfg.y" /* yacc.c:1646  */
    { default_core_cfg.dns_servers_no=(yyvsp[0].intval); }
#line 5886 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 125:
#line 861 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number expected"); }
#line 5892 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 126:
#line 862 "core/cfg.y" /* yacc.c:1646  */
    { default_core_cfg.dns_search_list=(yyvsp[0].intval); }
#line 5898 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 127:
#line 863 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("boolean value expected"); }
#line 5904 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 128:
#line 864 "core/cfg.y" /* yacc.c:1646  */
    { default_core_cfg.dns_search_fmatch=(yyvsp[0].intval); }
#line 5910 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 129:
#line 865 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("boolean value expected"); }
#line 5916 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 130:
#line 866 "core/cfg.y" /* yacc.c:1646  */
    { default_core_cfg.dns_naptr_ignore_rfc=(yyvsp[0].intval); }
#line 5922 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 131:
#line 867 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("boolean value expected"); }
#line 5928 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 132:
#line 868 "core/cfg.y" /* yacc.c:1646  */
    { IF_DNS_CACHE(dns_cache_init=(yyvsp[0].intval)); }
#line 5934 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 133:
#line 869 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("boolean value expected"); }
#line 5940 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 134:
#line 870 "core/cfg.y" /* yacc.c:1646  */
    { IF_DNS_CACHE(default_core_cfg.use_dns_cache=(yyvsp[0].intval)); }
#line 5946 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 135:
#line 871 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("boolean value expected"); }
#line 5952 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 136:
#line 872 "core/cfg.y" /* yacc.c:1646  */
    { IF_DNS_FAILOVER(default_core_cfg.use_dns_failover=(yyvsp[0].intval));}
#line 5958 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 137:
#line 873 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("boolean value expected"); }
#line 5964 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 138:
#line 874 "core/cfg.y" /* yacc.c:1646  */
    { IF_DNS_CACHE(default_core_cfg.dns_cache_flags=(yyvsp[0].intval)); }
#line 5970 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 139:
#line 875 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("boolean value expected"); }
#line 5976 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 140:
#line 876 "core/cfg.y" /* yacc.c:1646  */
    { IF_DNS_CACHE(default_core_cfg.dns_neg_cache_ttl=(yyvsp[0].intval)); }
#line 5982 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 141:
#line 877 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("boolean value expected"); }
#line 5988 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 142:
#line 878 "core/cfg.y" /* yacc.c:1646  */
    { IF_DNS_CACHE(default_core_cfg.dns_cache_max_ttl=(yyvsp[0].intval)); }
#line 5994 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 143:
#line 879 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("boolean value expected"); }
#line 6000 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 144:
#line 880 "core/cfg.y" /* yacc.c:1646  */
    { IF_DNS_CACHE(default_core_cfg.dns_cache_min_ttl=(yyvsp[0].intval)); }
#line 6006 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 145:
#line 881 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("boolean value expected"); }
#line 6012 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 146:
#line 882 "core/cfg.y" /* yacc.c:1646  */
    { IF_DNS_CACHE(default_core_cfg.dns_cache_max_mem=(yyvsp[0].intval)); }
#line 6018 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 147:
#line 883 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("boolean value expected"); }
#line 6024 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 148:
#line 884 "core/cfg.y" /* yacc.c:1646  */
    { IF_DNS_CACHE(dns_timer_interval=(yyvsp[0].intval)); }
#line 6030 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 149:
#line 885 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("boolean value expected"); }
#line 6036 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 150:
#line 886 "core/cfg.y" /* yacc.c:1646  */
    { IF_DNS_CACHE(default_core_cfg.dns_cache_del_nonexp=(yyvsp[0].intval)); }
#line 6042 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 151:
#line 887 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("boolean value expected"); }
#line 6048 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 152:
#line 888 "core/cfg.y" /* yacc.c:1646  */
    { IF_DNS_CACHE(default_core_cfg.dns_cache_rec_pref=(yyvsp[0].intval)); }
#line 6054 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 153:
#line 889 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("boolean value expected"); }
#line 6060 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 154:
#line 890 "core/cfg.y" /* yacc.c:1646  */
    {IF_AUTO_BIND_IPV6(auto_bind_ipv6 = (yyvsp[0].intval));}
#line 6066 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 155:
#line 891 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("boolean value expected"); }
#line 6072 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 156:
#line 892 "core/cfg.y" /* yacc.c:1646  */
    {
		ksr_ipv6_hex_style.s = (yyvsp[0].strval);
		if(ksr_ipv6_hex_style.s[0]!='a' && ksr_ipv6_hex_style.s[0]!='A'
				&& ksr_ipv6_hex_style.s[0]!='c') {
			yyerror("expected \"a\", \"A\" or \"c\" value");
		}
		ksr_ipv6_hex_style.len = strlen(ksr_ipv6_hex_style.s);
	}
#line 6085 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 157:
#line 900 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("string value expected"); }
#line 6091 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 158:
#line 901 "core/cfg.y" /* yacc.c:1646  */
    {sr_bind_ipv6_link_local = (yyvsp[0].intval);}
#line 6097 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 159:
#line 902 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("boolean value expected"); }
#line 6103 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 160:
#line 903 "core/cfg.y" /* yacc.c:1646  */
    { IF_DST_BLOCKLIST(dst_blocklist_init=(yyvsp[0].intval)); }
#line 6109 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 161:
#line 904 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("boolean value expected"); }
#line 6115 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 162:
#line 905 "core/cfg.y" /* yacc.c:1646  */
    {
		IF_DST_BLOCKLIST(default_core_cfg.use_dst_blocklist=(yyvsp[0].intval));
	}
#line 6123 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 163:
#line 908 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("boolean value expected"); }
#line 6129 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 164:
#line 909 "core/cfg.y" /* yacc.c:1646  */
    {
		IF_DST_BLOCKLIST(default_core_cfg.blst_max_mem=(yyvsp[0].intval));
	}
#line 6137 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 165:
#line 912 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("boolean value expected"); }
#line 6143 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 166:
#line 913 "core/cfg.y" /* yacc.c:1646  */
    {
		IF_DST_BLOCKLIST(default_core_cfg.blst_timeout=(yyvsp[0].intval));
	}
#line 6151 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 167:
#line 916 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("boolean value expected"); }
#line 6157 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 168:
#line 917 "core/cfg.y" /* yacc.c:1646  */
    { IF_DST_BLOCKLIST(blst_timer_interval=(yyvsp[0].intval));}
#line 6163 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 169:
#line 918 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("boolean value expected"); }
#line 6169 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 170:
#line 919 "core/cfg.y" /* yacc.c:1646  */
    {
		IF_DST_BLOCKLIST(default_core_cfg.blst_udp_imask=(yyvsp[0].intval));
	}
#line 6177 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 171:
#line 922 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number(flags) expected"); }
#line 6183 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 172:
#line 923 "core/cfg.y" /* yacc.c:1646  */
    {
		IF_DST_BLOCKLIST(default_core_cfg.blst_tcp_imask=(yyvsp[0].intval));
	}
#line 6191 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 173:
#line 926 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number(flags) expected"); }
#line 6197 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 174:
#line 927 "core/cfg.y" /* yacc.c:1646  */
    {
		IF_DST_BLOCKLIST(default_core_cfg.blst_tls_imask=(yyvsp[0].intval));
	}
#line 6205 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 175:
#line 930 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number(flags) expected"); }
#line 6211 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 176:
#line 931 "core/cfg.y" /* yacc.c:1646  */
    {
		IF_DST_BLOCKLIST(default_core_cfg.blst_sctp_imask=(yyvsp[0].intval));
	}
#line 6219 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 177:
#line 934 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number(flags) expected"); }
#line 6225 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 178:
#line 935 "core/cfg.y" /* yacc.c:1646  */
    { _sr_ip_free_bind=(yyvsp[0].intval); }
#line 6231 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 179:
#line 936 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("int value expected"); }
#line 6237 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 180:
#line 937 "core/cfg.y" /* yacc.c:1646  */
    { port_no=(yyvsp[0].intval); }
#line 6243 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 181:
#line 938 "core/cfg.y" /* yacc.c:1646  */
    { maxbuffer=(yyvsp[0].intval); }
#line 6249 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 182:
#line 939 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number expected"); }
#line 6255 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 183:
#line 940 "core/cfg.y" /* yacc.c:1646  */
    { sql_buffer_size=(yyvsp[0].intval); }
#line 6261 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 184:
#line 941 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number expected"); }
#line 6267 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 185:
#line 942 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number expected"); }
#line 6273 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 186:
#line 943 "core/cfg.y" /* yacc.c:1646  */
    { children_no=(yyvsp[0].intval); }
#line 6279 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 187:
#line 944 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number expected"); }
#line 6285 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 188:
#line 945 "core/cfg.y" /* yacc.c:1646  */
    { ksr_stats_namesep=(yyvsp[0].strval); }
#line 6291 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 189:
#line 946 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("string value expected"); }
#line 6297 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 190:
#line 947 "core/cfg.y" /* yacc.c:1646  */
    { socket_workers=(yyvsp[0].intval); }
#line 6303 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 191:
#line 948 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number expected"); }
#line 6309 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 192:
#line 949 "core/cfg.y" /* yacc.c:1646  */
    { async_task_set_workers((yyvsp[0].intval)); }
#line 6315 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 193:
#line 950 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number expected"); }
#line 6321 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 194:
#line 951 "core/cfg.y" /* yacc.c:1646  */
    { async_task_set_usleep((yyvsp[0].intval)); }
#line 6327 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 195:
#line 952 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number expected"); }
#line 6333 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 196:
#line 953 "core/cfg.y" /* yacc.c:1646  */
    { async_task_set_nonblock((yyvsp[0].intval)); }
#line 6339 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 197:
#line 954 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number expected"); }
#line 6345 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 198:
#line 955 "core/cfg.y" /* yacc.c:1646  */
    { async_task_set_workers_group((yyvsp[0].strval)); }
#line 6351 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 199:
#line 956 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("string expected"); }
#line 6357 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 200:
#line 957 "core/cfg.y" /* yacc.c:1646  */
    { check_via=(yyvsp[0].intval); }
#line 6363 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 201:
#line 958 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("boolean value expected"); }
#line 6369 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 202:
#line 959 "core/cfg.y" /* yacc.c:1646  */
    { phone2tel=(yyvsp[0].intval); }
#line 6375 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 203:
#line 960 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("boolean value expected"); }
#line 6381 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 204:
#line 961 "core/cfg.y" /* yacc.c:1646  */
    { default_core_cfg.memlog=(yyvsp[0].intval); }
#line 6387 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 205:
#line 962 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("int value expected"); }
#line 6393 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 206:
#line 963 "core/cfg.y" /* yacc.c:1646  */
    { default_core_cfg.memdbg=(yyvsp[0].intval); }
#line 6399 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 207:
#line 964 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("int value expected"); }
#line 6405 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 208:
#line 965 "core/cfg.y" /* yacc.c:1646  */
    { default_core_cfg.mem_summary=(yyvsp[0].intval); }
#line 6411 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 209:
#line 966 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("int value expected"); }
#line 6417 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 210:
#line 967 "core/cfg.y" /* yacc.c:1646  */
    { default_core_cfg.mem_safety=(yyvsp[0].intval); }
#line 6423 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 211:
#line 968 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("int value expected"); }
#line 6429 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 212:
#line 969 "core/cfg.y" /* yacc.c:1646  */
    { default_core_cfg.mem_join=(yyvsp[0].intval); }
#line 6435 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 213:
#line 970 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("int value expected"); }
#line 6441 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 214:
#line 971 "core/cfg.y" /* yacc.c:1646  */
    { default_core_cfg.mem_status_mode=(yyvsp[0].intval); }
#line 6447 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 215:
#line 972 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("int value expected"); }
#line 6453 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 216:
#line 973 "core/cfg.y" /* yacc.c:1646  */
    { default_core_cfg.sip_parser_log=(yyvsp[0].intval); }
#line 6459 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 217:
#line 974 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("int value expected"); }
#line 6465 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 218:
#line 975 "core/cfg.y" /* yacc.c:1646  */
    { ksr_sip_parser_mode=(yyvsp[0].intval); }
#line 6471 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 219:
#line 976 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("int value expected"); }
#line 6477 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 220:
#line 977 "core/cfg.y" /* yacc.c:1646  */
    { default_core_cfg.corelog=(yyvsp[0].intval); }
#line 6483 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 221:
#line 978 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("int value expected"); }
#line 6489 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 222:
#line 979 "core/cfg.y" /* yacc.c:1646  */
    { sip_warning=(yyvsp[0].intval); }
#line 6495 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 223:
#line 980 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("boolean value expected"); }
#line 6501 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 224:
#line 981 "core/cfg.y" /* yacc.c:1646  */
    { version_table.s=(yyvsp[0].strval);
			version_table.len=strlen(version_table.s);
	}
#line 6509 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 225:
#line 984 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("string value expected"); }
#line 6515 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 226:
#line 985 "core/cfg.y" /* yacc.c:1646  */
    {
		if (shm_initialized())
			yyerror("user must be before any modparam or the"
					" route blocks");
		else if (user==0)
			user=(yyvsp[0].strval);
	}
#line 6527 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 227:
#line 992 "core/cfg.y" /* yacc.c:1646  */
    {
		if (shm_initialized())
			yyerror("user must be before any modparam or the"
					" route blocks");
		else if (user==0)
			user=(yyvsp[0].strval);
	}
#line 6539 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 228:
#line 999 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("string value expected"); }
#line 6545 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 229:
#line 1000 "core/cfg.y" /* yacc.c:1646  */
    { group=(yyvsp[0].strval); }
#line 6551 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 230:
#line 1001 "core/cfg.y" /* yacc.c:1646  */
    { group=(yyvsp[0].strval); }
#line 6557 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 231:
#line 1002 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("string value expected"); }
#line 6563 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 232:
#line 1003 "core/cfg.y" /* yacc.c:1646  */
    { chroot_dir=(yyvsp[0].strval); }
#line 6569 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 233:
#line 1004 "core/cfg.y" /* yacc.c:1646  */
    { chroot_dir=(yyvsp[0].strval); }
#line 6575 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 234:
#line 1005 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("string value expected"); }
#line 6581 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 235:
#line 1006 "core/cfg.y" /* yacc.c:1646  */
    { working_dir=(yyvsp[0].strval); }
#line 6587 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 236:
#line 1007 "core/cfg.y" /* yacc.c:1646  */
    { working_dir=(yyvsp[0].strval); }
#line 6593 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 237:
#line 1008 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("string value expected"); }
#line 6599 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 238:
#line 1009 "core/cfg.y" /* yacc.c:1646  */
    { runtime_dir=(yyvsp[0].strval); }
#line 6605 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 239:
#line 1010 "core/cfg.y" /* yacc.c:1646  */
    { runtime_dir=(yyvsp[0].strval); }
#line 6611 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 240:
#line 1011 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("string value expected"); }
#line 6617 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 241:
#line 1012 "core/cfg.y" /* yacc.c:1646  */
    { mhomed=(yyvsp[0].intval); }
#line 6623 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 242:
#line 1013 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("boolean value expected"); }
#line 6629 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 243:
#line 1014 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef USE_TCP
			tcp_disable=(yyvsp[0].intval);
		#else
			warn("tcp support not compiled in");
		#endif
	}
#line 6641 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 244:
#line 1021 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("boolean value expected"); }
#line 6647 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 245:
#line 1022 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef USE_TCP
			tcp_default_cfg.accept_aliases=(yyvsp[0].intval);
		#else
			warn("tcp support not compiled in");
		#endif
	}
#line 6659 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 246:
#line 1029 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("boolean value expected"); }
#line 6665 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 247:
#line 1030 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef USE_TCP
			tcp_accept_unique=(yyvsp[0].intval);
		#else
			warn("tcp support not compiled in");
		#endif
	}
#line 6677 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 248:
#line 1037 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number expected"); }
#line 6683 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 249:
#line 1038 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef USE_TCP
			tcp_connection_match=(yyvsp[0].intval);
		#else
			warn("tcp support not compiled in");
		#endif
	}
#line 6695 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 250:
#line 1045 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number expected"); }
#line 6701 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 251:
#line 1046 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef USE_TCP
			tcp_cfg_children_no=(yyvsp[0].intval);
		#else
			warn("tcp support not compiled in");
		#endif
	}
#line 6713 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 252:
#line 1053 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number expected"); }
#line 6719 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 253:
#line 1054 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef USE_TCP
			tcp_default_cfg.connect_timeout_s=(yyvsp[0].intval);
		#else
			warn("tcp support not compiled in");
		#endif
	}
#line 6731 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 254:
#line 1061 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number expected"); }
#line 6737 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 255:
#line 1062 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef USE_TCP
			tcp_default_cfg.send_timeout=S_TO_TICKS((yyvsp[0].intval));
		#else
			warn("tcp support not compiled in");
		#endif
	}
#line 6749 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 256:
#line 1069 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number expected"); }
#line 6755 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 257:
#line 1070 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef USE_TCP
			if ((yyvsp[0].intval)<0)
				tcp_default_cfg.con_lifetime=-1;
			else
				tcp_default_cfg.con_lifetime=S_TO_TICKS((yyvsp[0].intval));
		#else
			warn("tcp support not compiled in");
		#endif
	}
#line 6770 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 258:
#line 1080 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number expected"); }
#line 6776 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 259:
#line 1081 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef USE_TCP
			tcp_poll_method=get_poll_type((yyvsp[0].strval));
			if (tcp_poll_method==POLL_NONE) {
				LOG(L_CRIT, "bad poll method name:"
						" %s\n, try one of %s.\n",
						(yyvsp[0].strval), poll_support);
				yyerror("bad tcp_poll_method "
						"value");
			}
		#else
			warn("tcp support not compiled in");
		#endif
	}
#line 6795 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 260:
#line 1095 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef USE_TCP
			tcp_poll_method=get_poll_type((yyvsp[0].strval));
			if (tcp_poll_method==POLL_NONE) {
				LOG(L_CRIT, "bad poll method name:"
						" %s\n, try one of %s.\n",
						(yyvsp[0].strval), poll_support);
				yyerror("bad tcp_poll_method "
						"value");
			}
		#else
			warn("tcp support not compiled in");
		#endif
	}
#line 6814 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 261:
#line 1109 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("poll method name expected"); }
#line 6820 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 262:
#line 1110 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef USE_TCP
			tcp_max_connections=(yyvsp[0].intval);
		#else
			warn("tcp support not compiled in");
		#endif
	}
#line 6832 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 263:
#line 1117 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number expected"); }
#line 6838 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 264:
#line 1118 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef USE_TLS
			tls_max_connections=(yyvsp[0].intval);
		#else
			warn("tls support not compiled in");
		#endif
	}
#line 6850 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 265:
#line 1125 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number expected"); }
#line 6856 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 266:
#line 1126 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef USE_TCP
			tcp_default_cfg.no_connect=(yyvsp[0].intval);
		#else
			warn("tcp support not compiled in");
		#endif
	}
#line 6868 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 267:
#line 1133 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("boolean value expected"); }
#line 6874 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 268:
#line 1134 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef USE_TCP
			if (tcp_set_src_addr((yyvsp[0].ipaddr))<0)
				warn("tcp_source_ipv4 failed");
		#else
			warn("tcp support not compiled in");
		#endif
		pkg_free((yyvsp[0].ipaddr));
	}
#line 6888 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 269:
#line 1143 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("IPv4 address expected"); }
#line 6894 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 270:
#line 1144 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef USE_TCP
				if (tcp_set_src_addr((yyvsp[0].ipaddr))<0)
					warn("tcp_source_ipv6 failed");
		#else
			warn("tcp support not compiled in");
		#endif
		pkg_free((yyvsp[0].ipaddr));
	}
#line 6908 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 271:
#line 1153 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("IPv6 address expected"); }
#line 6914 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 272:
#line 1154 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef USE_TCP
			tcp_default_cfg.fd_cache=(yyvsp[0].intval);
		#else
			warn("tcp support not compiled in");
		#endif
	}
#line 6926 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 273:
#line 1161 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("boolean value expected"); }
#line 6932 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 274:
#line 1162 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef USE_TCP
			tcp_default_cfg.async=(yyvsp[0].intval);
		#else
			warn("tcp support not compiled in");
		#endif
	}
#line 6944 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 275:
#line 1169 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("boolean value expected"); }
#line 6950 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 276:
#line 1170 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef USE_TCP
			tcp_default_cfg.tcpconn_wq_max=(yyvsp[0].intval);
		#else
			warn("tcp support not compiled in");
		#endif
	}
#line 6962 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 277:
#line 1177 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("boolean value expected"); }
#line 6968 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 278:
#line 1178 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef USE_TCP
			tcp_default_cfg.tcp_wq_max=(yyvsp[0].intval);
		#else
			warn("tcp support not compiled in");
		#endif
	}
#line 6980 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 279:
#line 1185 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number expected"); }
#line 6986 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 280:
#line 1186 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef USE_TCP
			tcp_default_cfg.rd_buf_size=(yyvsp[0].intval);
		#else
			warn("tcp support not compiled in");
		#endif
	}
#line 6998 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 281:
#line 1193 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number expected"); }
#line 7004 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 282:
#line 1194 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef USE_TCP
			tcp_default_cfg.wq_blk_size=(yyvsp[0].intval);
		#else
			warn("tcp support not compiled in");
		#endif
	}
#line 7016 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 283:
#line 1201 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number expected"); }
#line 7022 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 284:
#line 1202 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef USE_TCP
			tcp_default_cfg.defer_accept=(yyvsp[0].intval);
		#else
			warn("tcp support not compiled in");
		#endif
	}
#line 7034 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 285:
#line 1209 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("boolean value expected"); }
#line 7040 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 286:
#line 1210 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef USE_TCP
			tcp_default_cfg.delayed_ack=(yyvsp[0].intval);
		#else
			warn("tcp support not compiled in");
		#endif
	}
#line 7052 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 287:
#line 1217 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("boolean value expected"); }
#line 7058 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 288:
#line 1218 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef USE_TCP
			tcp_default_cfg.syncnt=(yyvsp[0].intval);
		#else
			warn("tcp support not compiled in");
		#endif
	}
#line 7070 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 289:
#line 1225 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number expected"); }
#line 7076 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 290:
#line 1226 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef USE_TCP
			tcp_default_cfg.linger2=(yyvsp[0].intval);
		#else
			warn("tcp support not compiled in");
		#endif
	}
#line 7088 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 291:
#line 1233 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number expected"); }
#line 7094 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 292:
#line 1234 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef USE_TCP
			tcp_default_cfg.keepalive=(yyvsp[0].intval);
		#else
			warn("tcp support not compiled in");
		#endif
	}
#line 7106 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 293:
#line 1241 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("boolean value expected");}
#line 7112 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 294:
#line 1242 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef USE_TCP
			tcp_default_cfg.keepidle=(yyvsp[0].intval);
		#else
			warn("tcp support not compiled in");
		#endif
	}
#line 7124 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 295:
#line 1249 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number expected"); }
#line 7130 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 296:
#line 1250 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef USE_TCP
			tcp_default_cfg.keepintvl=(yyvsp[0].intval);
		#else
			warn("tcp support not compiled in");
		#endif
	}
#line 7142 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 297:
#line 1257 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number expected"); }
#line 7148 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 298:
#line 1258 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef USE_TCP
			tcp_default_cfg.keepcnt=(yyvsp[0].intval);
		#else
			warn("tcp support not compiled in");
		#endif
	}
#line 7160 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 299:
#line 1265 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number expected"); }
#line 7166 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 300:
#line 1266 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef USE_TCP
			tcp_default_cfg.crlf_ping=(yyvsp[0].intval);
		#else
			warn("tcp support not compiled in");
		#endif
	}
#line 7178 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 301:
#line 1273 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("boolean value expected"); }
#line 7184 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 302:
#line 1274 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef USE_TCP
			tcp_default_cfg.accept_no_cl=(yyvsp[0].intval);
		#else
			warn("tcp support not compiled in");
		#endif
	}
#line 7196 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 303:
#line 1281 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("boolean value expected"); }
#line 7202 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 304:
#line 1282 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef USE_TCP
			ksr_tcp_accept_hep3=(yyvsp[0].intval);
		#else
			warn("tcp support not compiled in");
		#endif
	}
#line 7214 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 305:
#line 1289 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("boolean value expected"); }
#line 7220 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 306:
#line 1290 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef USE_TCP
			ksr_tcp_accept_haproxy=(yyvsp[0].intval);
		#else
			warn("tcp support not compiled in");
		#endif
	}
#line 7232 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 307:
#line 1297 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("boolean value expected"); }
#line 7238 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 308:
#line 1299 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef USE_TCP
			tcp_set_clone_rcvbuf((yyvsp[0].intval));
		#else
			warn("tcp support not compiled in");
		#endif
	}
#line 7250 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 309:
#line 1306 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number expected"); }
#line 7256 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 310:
#line 1307 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef USE_TCP
		#ifdef SO_REUSEPORT
			tcp_default_cfg.reuse_port=(yyvsp[0].intval);
		#else
			warn("support for SO_REUSEPORT not compiled in");
		#endif
		#else
			warn("tcp support not compiled in");
		#endif
	}
#line 7272 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 311:
#line 1318 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("boolean value expected"); }
#line 7278 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 312:
#line 1319 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef USE_TLS
			tls_disable=(yyvsp[0].intval);
		#else
			warn("tls support not compiled in");
		#endif
	}
#line 7290 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 313:
#line 1326 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("boolean value expected"); }
#line 7296 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 314:
#line 1327 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef USE_TLS
			tls_disable=!((yyvsp[0].intval));
		#else
			warn("tls support not compiled in");
		#endif
	}
#line 7308 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 315:
#line 1334 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("boolean value expected"); }
#line 7314 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 316:
#line 1335 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef CORE_TLS
			tls_log=(yyvsp[0].intval);
		#else
			warn("tls-in-core support not compiled in");
		#endif
	}
#line 7326 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 317:
#line 1342 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("int value expected"); }
#line 7332 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 318:
#line 1343 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef USE_TLS
			tls_port_no=(yyvsp[0].intval);
		#else
			warn("tls support not compiled in");
		#endif
	}
#line 7344 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 319:
#line 1350 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number expected"); }
#line 7350 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 320:
#line 1351 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef CORE_TLS
			tls_method=TLS_USE_SSLv23;
		#else
			warn("tls-in-core support not compiled in");
		#endif
	}
#line 7362 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 321:
#line 1358 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef CORE_TLS
			tls_method=TLS_USE_SSLv2;
		#else
			warn("tls-in-core support not compiled in");
		#endif
	}
#line 7374 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 322:
#line 1365 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef CORE_TLS
			tls_method=TLS_USE_SSLv3;
		#else
			warn("tls-in-core support not compiled in");
		#endif
	}
#line 7386 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 323:
#line 1372 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef CORE_TLS
			tls_method=TLS_USE_TLSv1;
		#else
			warn("tls-in-core support not compiled in");
		#endif
	}
#line 7398 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 324:
#line 1379 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef CORE_TLS
			yyerror("SSLv23, SSLv2, SSLv3 or TLSv1 expected");
		#else
			warn("tls-in-core support not compiled in");
		#endif
	}
#line 7410 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 325:
#line 1386 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef CORE_TLS
			tls_verify_cert=(yyvsp[0].intval);
		#else
			warn("tls-in-core support not compiled in");
		#endif
	}
#line 7422 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 326:
#line 1393 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("boolean value expected"); }
#line 7428 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 327:
#line 1394 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef CORE_TLS
			tls_require_cert=(yyvsp[0].intval);
		#else
			warn( "tls-in-core support not compiled in");
		#endif
	}
#line 7440 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 328:
#line 1401 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("boolean value expected"); }
#line 7446 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 329:
#line 1402 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef CORE_TLS
			tls_cert_file=(yyvsp[0].strval);
		#else
			warn("tls-in-core support not compiled in");
		#endif
	}
#line 7458 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 330:
#line 1409 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("string value expected"); }
#line 7464 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 331:
#line 1410 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef CORE_TLS
			tls_pkey_file=(yyvsp[0].strval);
		#else
			warn("tls-in-core support not compiled in");
		#endif
	}
#line 7476 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 332:
#line 1417 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("string value expected"); }
#line 7482 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 333:
#line 1418 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef CORE_TLS
			tls_ca_file=(yyvsp[0].strval);
		#else
			warn("tls-in-core support not compiled in");
		#endif
	}
#line 7494 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 334:
#line 1425 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("string value expected"); }
#line 7500 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 335:
#line 1426 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef CORE_TLS
			tls_handshake_timeout=(yyvsp[0].intval);
		#else
			warn("tls-in-core support not compiled in");
		#endif
	}
#line 7512 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 336:
#line 1433 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number expected"); }
#line 7518 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 337:
#line 1434 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef CORE_TLS
			tls_send_timeout=(yyvsp[0].intval);
		#else
			warn("tls-in-core support not compiled in");
		#endif
	}
#line 7530 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 338:
#line 1441 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number expected"); }
#line 7536 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 339:
#line 1442 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef USE_SCTP
			sctp_disable=(yyvsp[0].intval);
		#else
			warn("sctp support not compiled in");
		#endif
	}
#line 7548 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 340:
#line 1449 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("boolean value expected"); }
#line 7554 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 341:
#line 1450 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef USE_SCTP
			sctp_disable=((yyvsp[0].intval)<=1)?!(yyvsp[0].intval):(yyvsp[0].intval);
		#else
			warn("sctp support not compiled in");
		#endif
	}
#line 7566 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 342:
#line 1457 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("boolean or number expected"); }
#line 7572 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 343:
#line 1458 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef USE_SCTP
			sctp_children_no=(yyvsp[0].intval);
		#else
			warn("sctp support not compiled in");
		#endif
	}
#line 7584 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 344:
#line 1465 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number expected"); }
#line 7590 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 345:
#line 1466 "core/cfg.y" /* yacc.c:1646  */
    { server_signature=(yyvsp[0].intval); }
#line 7596 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 346:
#line 1467 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("boolean value expected"); }
#line 7602 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 347:
#line 1468 "core/cfg.y" /* yacc.c:1646  */
    { server_hdr.s=(yyvsp[0].strval);
			server_hdr.len=strlen(server_hdr.s);
	}
#line 7610 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 348:
#line 1471 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("string value expected"); }
#line 7616 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 349:
#line 1472 "core/cfg.y" /* yacc.c:1646  */
    { user_agent_hdr.s=(yyvsp[0].strval);
			user_agent_hdr.len=strlen(user_agent_hdr.s);
	}
#line 7624 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 350:
#line 1475 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("string value expected"); }
#line 7630 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 351:
#line 1476 "core/cfg.y" /* yacc.c:1646  */
    { _sr_uri_host_extra_chars=(yyvsp[0].strval); }
#line 7636 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 352:
#line 1477 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("string value expected"); }
#line 7642 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 353:
#line 1478 "core/cfg.y" /* yacc.c:1646  */
    { _ksr_hname_extra_chars=(unsigned char*)(yyvsp[0].strval); }
#line 7648 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 354:
#line 1479 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("string value expected"); }
#line 7654 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 355:
#line 1480 "core/cfg.y" /* yacc.c:1646  */
    { reply_to_via=(yyvsp[0].intval); }
#line 7660 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 356:
#line 1481 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("boolean value expected"); }
#line 7666 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 357:
#line 1482 "core/cfg.y" /* yacc.c:1646  */
    {
		for(lst_tmp=(yyvsp[0].sockid); lst_tmp; lst_tmp=lst_tmp->next) {
			if (add_listen_iface(	lst_tmp->addr_lst->name,
									lst_tmp->addr_lst->next,
									lst_tmp->port, lst_tmp->proto,
									lst_tmp->flags)!=0) {
				LM_CRIT("cfg. parser: failed to add listen address\n");
				break;
			}
		}
		free_socket_id_lst((yyvsp[0].sockid));
	}
#line 7683 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 358:
#line 1494 "core/cfg.y" /* yacc.c:1646  */
    {
		for(lst_tmp=(yyvsp[-2].sockid); lst_tmp; lst_tmp=lst_tmp->next) {
			if (add_listen_iface_name(lst_tmp->addr_lst->name,
									lst_tmp->addr_lst->next,
									lst_tmp->port, lst_tmp->proto, (yyvsp[0].strval),
									lst_tmp->flags)!=0) {
				LM_CRIT("cfg. parser: failed to add listen address\n");
				break;
			}
		}
		free_socket_id_lst((yyvsp[-2].sockid));
	}
#line 7700 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 359:
#line 1506 "core/cfg.y" /* yacc.c:1646  */
    {
		for(lst_tmp=(yyvsp[-4].sockid); lst_tmp; lst_tmp=lst_tmp->next) {
			if (add_listen_advertise_iface(	lst_tmp->addr_lst->name,
									lst_tmp->addr_lst->next,
									lst_tmp->port, lst_tmp->proto,
									(yyvsp[-2].strval), (yyvsp[0].intval),
									lst_tmp->flags)!=0) {
				LM_CRIT("cfg. parser: failed to add listen address\n");
				break;
			}
		}
		free_socket_id_lst((yyvsp[-4].sockid));
	}
#line 7718 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 360:
#line 1519 "core/cfg.y" /* yacc.c:1646  */
    {
		for(lst_tmp=(yyvsp[-6].sockid); lst_tmp; lst_tmp=lst_tmp->next) {
			if (add_listen_advertise_iface_name(lst_tmp->addr_lst->name,
									lst_tmp->addr_lst->next,
									lst_tmp->port, lst_tmp->proto,
									(yyvsp[-4].strval), (yyvsp[-2].intval), (yyvsp[0].strval),
									lst_tmp->flags)!=0) {
				LM_CRIT("cfg. parser: failed to add listen address\n");
				break;
			}
		}
		free_socket_id_lst((yyvsp[-6].sockid));
	}
#line 7736 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 361:
#line 1532 "core/cfg.y" /* yacc.c:1646  */
    {
		for(lst_tmp=(yyvsp[-2].sockid); lst_tmp; lst_tmp=lst_tmp->next) {
			if (add_listen_advertise_iface(	lst_tmp->addr_lst->name,
									lst_tmp->addr_lst->next,
									lst_tmp->port, lst_tmp->proto,
									(yyvsp[0].strval), 0,
									lst_tmp->flags)!=0) {
				LM_CRIT("cfg. parser: failed to add listen address\n");
				break;
			}
		}
		free_socket_id_lst((yyvsp[-2].sockid));
	}
#line 7754 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 362:
#line 1545 "core/cfg.y" /* yacc.c:1646  */
    {
		for(lst_tmp=(yyvsp[-4].sockid); lst_tmp; lst_tmp=lst_tmp->next) {
			if (add_listen_advertise_iface_name(lst_tmp->addr_lst->name,
									lst_tmp->addr_lst->next,
									lst_tmp->port, lst_tmp->proto,
									(yyvsp[-2].strval), 0, (yyvsp[0].strval),
									lst_tmp->flags)!=0) {
				LM_CRIT("cfg. parser: failed to add listen address\n");
				break;
			}
		}
		free_socket_id_lst((yyvsp[-4].sockid));
	}
#line 7772 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 363:
#line 1558 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("ip address, interface name or"
									" hostname expected"); }
#line 7779 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 364:
#line 1560 "core/cfg.y" /* yacc.c:1646  */
    {
		for(lst_tmp=(yyvsp[0].sockid); lst_tmp; lst_tmp=lst_tmp->next){
			add_alias(	lst_tmp->addr_lst->name,
						strlen(lst_tmp->addr_lst->name),
						lst_tmp->port, lst_tmp->proto);
			for (nl_tmp=lst_tmp->addr_lst->next; nl_tmp; nl_tmp=nl_tmp->next)
				add_alias(nl_tmp->name, strlen(nl_tmp->name),
							lst_tmp->port, lst_tmp->proto);
		}
		free_socket_id_lst((yyvsp[0].sockid));
	}
#line 7795 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 365:
#line 1571 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("hostname expected"); }
#line 7801 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 366:
#line 1572 "core/cfg.y" /* yacc.c:1646  */
    { sr_auto_aliases=(yyvsp[0].intval); }
#line 7807 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 367:
#line 1573 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("boolean value expected"); }
#line 7813 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 368:
#line 1574 "core/cfg.y" /* yacc.c:1646  */
    {
		if ((yyvsp[0].strval)){
			default_global_address.s=(yyvsp[0].strval);
			default_global_address.len=strlen((yyvsp[0].strval));
		}
	}
#line 7824 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 369:
#line 1580 "core/cfg.y" /* yacc.c:1646  */
    {yyerror("ip address or hostname expected"); }
#line 7830 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 370:
#line 1581 "core/cfg.y" /* yacc.c:1646  */
    {
		tmp=int2str((yyvsp[0].intval), &i_tmp);
		if ((default_global_port.s=pkg_malloc(i_tmp))==0) {
			PKG_MEM_CRITICAL;
			default_global_port.len=0;
		} else {
			default_global_port.len=i_tmp;
			memcpy(default_global_port.s, tmp, default_global_port.len);
		};
	}
#line 7845 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 371:
#line 1591 "core/cfg.y" /* yacc.c:1646  */
    {yyerror("ip address or hostname expected"); }
#line 7851 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 372:
#line 1592 "core/cfg.y" /* yacc.c:1646  */
    { disable_core_dump=(yyvsp[0].intval); }
#line 7857 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 373:
#line 1593 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("boolean value expected"); }
#line 7863 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 374:
#line 1594 "core/cfg.y" /* yacc.c:1646  */
    { open_files_limit=(yyvsp[0].intval); }
#line 7869 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 375:
#line 1595 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number expected"); }
#line 7875 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 376:
#line 1596 "core/cfg.y" /* yacc.c:1646  */
    {
		if (shm_initialized())
			yyerror("shm/shm_mem_size must be before any modparam or the"
					" route blocks");
		else if (shm_mem_size == 0 || shm_mem_size == SHM_MEM_POOL_SIZE)
			shm_mem_size=(yyvsp[0].intval) * 1024 * 1024;
	}
#line 7887 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 377:
#line 1603 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number expected"); }
#line 7893 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 378:
#line 1604 "core/cfg.y" /* yacc.c:1646  */
    {
		if (shm_initialized())
			yyerror("shm_force_alloc must be before any modparam or the"
					" route blocks");
		else
			shm_force_alloc=(yyvsp[0].intval);
	}
#line 7905 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 379:
#line 1611 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("boolean value expected"); }
#line 7911 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 380:
#line 1612 "core/cfg.y" /* yacc.c:1646  */
    { mlock_pages=(yyvsp[0].intval); }
#line 7917 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 381:
#line 1613 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("boolean value expected"); }
#line 7923 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 382:
#line 1614 "core/cfg.y" /* yacc.c:1646  */
    { real_time=(yyvsp[0].intval); }
#line 7929 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 383:
#line 1615 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("boolean value expected"); }
#line 7935 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 384:
#line 1616 "core/cfg.y" /* yacc.c:1646  */
    { rt_prio=(yyvsp[0].intval); }
#line 7941 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 385:
#line 1617 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("boolean value expected"); }
#line 7947 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 386:
#line 1618 "core/cfg.y" /* yacc.c:1646  */
    { rt_policy=(yyvsp[0].intval); }
#line 7953 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 387:
#line 1619 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("boolean value expected"); }
#line 7959 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 388:
#line 1620 "core/cfg.y" /* yacc.c:1646  */
    { rt_timer1_prio=(yyvsp[0].intval); }
#line 7965 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 389:
#line 1621 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("boolean value expected"); }
#line 7971 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 390:
#line 1622 "core/cfg.y" /* yacc.c:1646  */
    { rt_timer1_policy=(yyvsp[0].intval); }
#line 7977 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 391:
#line 1623 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("boolean value expected"); }
#line 7983 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 392:
#line 1624 "core/cfg.y" /* yacc.c:1646  */
    { rt_timer2_prio=(yyvsp[0].intval); }
#line 7989 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 393:
#line 1625 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("boolean value expected"); }
#line 7995 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 394:
#line 1626 "core/cfg.y" /* yacc.c:1646  */
    { rt_timer2_policy=(yyvsp[0].intval); }
#line 8001 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 395:
#line 1627 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("boolean value expected"); }
#line 8007 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 396:
#line 1628 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef USE_MCAST
			mcast_loopback=(yyvsp[0].intval);
		#else
			warn("no multicast support compiled in");
		#endif
	}
#line 8019 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 397:
#line 1635 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("boolean value expected"); }
#line 8025 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 398:
#line 1636 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef USE_MCAST
			mcast_ttl=(yyvsp[0].intval);
		#else
			warn("no multicast support compiled in");
		#endif
	}
#line 8037 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 399:
#line 1643 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number expected"); }
#line 8043 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 400:
#line 1644 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef USE_MCAST
			mcast=(yyvsp[0].strval);
		#else
			warn("no multicast support compiled in");
		#endif
	}
#line 8055 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 401:
#line 1651 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef USE_MCAST
			mcast=(yyvsp[0].strval);
		#else
			warn("no multicast support compiled in");
		#endif
	}
#line 8067 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 402:
#line 1658 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("string expected"); }
#line 8073 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 403:
#line 1659 "core/cfg.y" /* yacc.c:1646  */
    { tos=(yyvsp[0].intval); }
#line 8079 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 404:
#line 1660 "core/cfg.y" /* yacc.c:1646  */
    { if (strcasecmp((yyvsp[0].strval),"IPTOS_LOWDELAY")) {
			tos=IPTOS_LOWDELAY;
		} else if (strcasecmp((yyvsp[0].strval),"IPTOS_THROUGHPUT")) {
			tos=IPTOS_THROUGHPUT;
		} else if (strcasecmp((yyvsp[0].strval),"IPTOS_RELIABILITY")) {
			tos=IPTOS_RELIABILITY;
#if defined(IPTOS_MINCOST)
		} else if (strcasecmp((yyvsp[0].strval),"IPTOS_MINCOST")) {
			tos=IPTOS_MINCOST;
#endif
#if defined(IPTOS_LOWCOST)
		} else if (strcasecmp((yyvsp[0].strval),"IPTOS_LOWCOST")) {
			tos=IPTOS_LOWCOST;
#endif
		} else {
			yyerror("invalid tos value - allowed: "
				"IPTOS_LOWDELAY,IPTOS_THROUGHPUT,"
				"IPTOS_RELIABILITY"
#if defined(IPTOS_LOWCOST)
				",IPTOS_LOWCOST"
#endif
#if !defined(IPTOS_MINCOST)
				",IPTOS_MINCOST"
#endif
				"\n");
		}
	}
#line 8111 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 405:
#line 1687 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number expected"); }
#line 8117 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 406:
#line 1688 "core/cfg.y" /* yacc.c:1646  */
    { pmtu_discovery=(yyvsp[0].intval); }
#line 8123 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 407:
#line 1689 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number expected"); }
#line 8129 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 408:
#line 1690 "core/cfg.y" /* yacc.c:1646  */
    { ser_kill_timeout=(yyvsp[0].intval); }
#line 8135 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 409:
#line 1691 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number expected"); }
#line 8141 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 410:
#line 1692 "core/cfg.y" /* yacc.c:1646  */
    { default_core_cfg.max_while_loops=(yyvsp[0].intval); }
#line 8147 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 411:
#line 1693 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number expected"); }
#line 8153 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 412:
#line 1694 "core/cfg.y" /* yacc.c:1646  */
    { pv_set_buffer_size((yyvsp[0].intval)); }
#line 8159 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 413:
#line 1695 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number expected"); }
#line 8165 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 414:
#line 1696 "core/cfg.y" /* yacc.c:1646  */
    { pv_set_buffer_slots((yyvsp[0].intval)); }
#line 8171 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 415:
#line 1697 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number expected"); }
#line 8177 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 416:
#line 1698 "core/cfg.y" /* yacc.c:1646  */
    { default_core_cfg.pv_cache_limit=(yyvsp[0].intval); }
#line 8183 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 417:
#line 1699 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number expected"); }
#line 8189 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 418:
#line 1700 "core/cfg.y" /* yacc.c:1646  */
    { default_core_cfg.pv_cache_action=(yyvsp[0].intval); }
#line 8195 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 419:
#line 1701 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number expected"); }
#line 8201 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 420:
#line 1702 "core/cfg.y" /* yacc.c:1646  */
    { http_reply_parse=(yyvsp[0].intval); }
#line 8207 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 421:
#line 1703 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("boolean value expected"); }
#line 8213 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 422:
#line 1704 "core/cfg.y" /* yacc.c:1646  */
    { ksr_verbose_startup=(yyvsp[0].intval); }
#line 8219 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 423:
#line 1705 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("boolean value expected"); }
#line 8225 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 424:
#line 1706 "core/cfg.y" /* yacc.c:1646  */
    { ksr_route_locks_size=(yyvsp[0].intval); }
#line 8231 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 425:
#line 1707 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number expected"); }
#line 8237 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 426:
#line 1708 "core/cfg.y" /* yacc.c:1646  */
    { ksr_wait_worker1_mode=(yyvsp[0].intval); }
#line 8243 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 427:
#line 1709 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number expected"); }
#line 8249 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 428:
#line 1710 "core/cfg.y" /* yacc.c:1646  */
    { ksr_wait_worker1_time=(yyvsp[0].intval); }
#line 8255 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 429:
#line 1711 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number expected"); }
#line 8261 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 430:
#line 1712 "core/cfg.y" /* yacc.c:1646  */
    { ksr_wait_worker1_usleep=(yyvsp[0].intval); }
#line 8267 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 431:
#line 1713 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number expected"); }
#line 8273 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 432:
#line 1714 "core/cfg.y" /* yacc.c:1646  */
    { server_id=(yyvsp[0].intval); }
#line 8279 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 433:
#line 1715 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number expected"); }
#line 8285 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 434:
#line 1716 "core/cfg.y" /* yacc.c:1646  */
    {
			kemi_onsend_route_callback.s = (yyvsp[0].strval);
			kemi_onsend_route_callback.len = strlen((yyvsp[0].strval));
			if(kemi_onsend_route_callback.len==4
					&& strcasecmp(kemi_onsend_route_callback.s, "none")==0) {
				kemi_onsend_route_callback.s = "";
				kemi_onsend_route_callback.len = 0;
			}
		}
#line 8299 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 435:
#line 1725 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("string expected"); }
#line 8305 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 436:
#line 1726 "core/cfg.y" /* yacc.c:1646  */
    {
			kemi_reply_route_callback.s = (yyvsp[0].strval);
			kemi_reply_route_callback.len = strlen((yyvsp[0].strval));
			if(kemi_reply_route_callback.len==4
					&& strcasecmp(kemi_reply_route_callback.s, "none")==0) {
				kemi_reply_route_callback.s = "";
				kemi_reply_route_callback.len = 0;
			}
		}
#line 8319 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 437:
#line 1735 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("string expected"); }
#line 8325 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 438:
#line 1736 "core/cfg.y" /* yacc.c:1646  */
    {
			kemi_event_route_callback.s = (yyvsp[0].strval);
			kemi_event_route_callback.len = strlen((yyvsp[0].strval));
			if(kemi_event_route_callback.len==4
					&& strcasecmp(kemi_event_route_callback.s, "none")==0) {
				kemi_event_route_callback.s = "";
				kemi_event_route_callback.len = 0;
			}
		}
#line 8339 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 439:
#line 1745 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("string expected"); }
#line 8345 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 440:
#line 1746 "core/cfg.y" /* yacc.c:1646  */
    {
			kemi_received_route_callback.s = (yyvsp[0].strval);
			kemi_received_route_callback.len = strlen((yyvsp[0].strval));
			if(kemi_received_route_callback.len==4
					&& strcasecmp(kemi_received_route_callback.s, "none")==0) {
				kemi_received_route_callback.s = "";
				kemi_received_route_callback.len = 0;
			}
		}
#line 8359 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 441:
#line 1755 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("string expected"); }
#line 8365 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 442:
#line 1756 "core/cfg.y" /* yacc.c:1646  */
    {
			kemi_pre_routing_callback.s = (yyvsp[0].strval);
			kemi_pre_routing_callback.len = strlen((yyvsp[0].strval));
			if(kemi_pre_routing_callback.len==4
					&& strcasecmp(kemi_pre_routing_callback.s, "none")==0) {
				kemi_pre_routing_callback.s = "";
				kemi_pre_routing_callback.len = 0;
			}
		}
#line 8379 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 443:
#line 1765 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("string expected"); }
#line 8385 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 444:
#line 1766 "core/cfg.y" /* yacc.c:1646  */
    { ksr_evrt_received_mode=(yyvsp[0].intval); }
#line 8391 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 445:
#line 1767 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number  expected"); }
#line 8397 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 446:
#line 1768 "core/cfg.y" /* yacc.c:1646  */
    { set_max_recursive_level((yyvsp[0].intval)); }
#line 8403 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 447:
#line 1769 "core/cfg.y" /* yacc.c:1646  */
    { sr_dst_max_branches = (yyvsp[0].intval); }
#line 8409 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 448:
#line 1770 "core/cfg.y" /* yacc.c:1646  */
    { default_core_cfg.latency_log=(yyvsp[0].intval); }
#line 8415 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 449:
#line 1771 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number  expected"); }
#line 8421 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 450:
#line 1772 "core/cfg.y" /* yacc.c:1646  */
    { default_core_cfg.latency_cfg_log=(yyvsp[0].intval); }
#line 8427 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 451:
#line 1773 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number  expected"); }
#line 8433 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 452:
#line 1774 "core/cfg.y" /* yacc.c:1646  */
    { default_core_cfg.latency_limit_db=(yyvsp[0].intval); }
#line 8439 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 453:
#line 1775 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number  expected"); }
#line 8445 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 454:
#line 1776 "core/cfg.y" /* yacc.c:1646  */
    { default_core_cfg.latency_limit_action=(yyvsp[0].intval); }
#line 8451 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 455:
#line 1777 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number  expected"); }
#line 8457 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 456:
#line 1778 "core/cfg.y" /* yacc.c:1646  */
    { default_core_cfg.latency_limit_cfg=(yyvsp[0].intval); }
#line 8463 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 457:
#line 1779 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number  expected"); }
#line 8469 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 458:
#line 1780 "core/cfg.y" /* yacc.c:1646  */
    { sr_msg_time=(yyvsp[0].intval); }
#line 8475 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 459:
#line 1781 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number  expected"); }
#line 8481 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 460:
#line 1782 "core/cfg.y" /* yacc.c:1646  */
    { onsend_route_reply=(yyvsp[0].intval); }
#line 8487 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 461:
#line 1783 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("int value expected"); }
#line 8493 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 462:
#line 1784 "core/cfg.y" /* yacc.c:1646  */
    { default_core_cfg.udp_mtu=(yyvsp[0].intval); }
#line 8499 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 463:
#line 1785 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number expected"); }
#line 8505 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 464:
#line 1787 "core/cfg.y" /* yacc.c:1646  */
    { default_core_cfg.force_rport=(yyvsp[0].intval); fix_global_req_flags(0, 0); }
#line 8511 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 465:
#line 1788 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("boolean value expected"); }
#line 8517 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 466:
#line 1789 "core/cfg.y" /* yacc.c:1646  */
    { ksr_local_rport=(yyvsp[0].intval); }
#line 8523 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 467:
#line 1790 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("boolean value expected"); }
#line 8529 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 468:
#line 1792 "core/cfg.y" /* yacc.c:1646  */
    { default_core_cfg.udp_mtu_try_proto=(yyvsp[0].intval); fix_global_req_flags(0, 0); }
#line 8535 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 469:
#line 1794 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("TCP, TLS, SCTP or UDP expected"); }
#line 8541 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 470:
#line 1795 "core/cfg.y" /* yacc.c:1646  */
    { IF_RAW_SOCKS(default_core_cfg.udp4_raw=(yyvsp[0].intval)); }
#line 8547 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 471:
#line 1796 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number expected"); }
#line 8553 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 472:
#line 1797 "core/cfg.y" /* yacc.c:1646  */
    {
		IF_RAW_SOCKS(default_core_cfg.udp4_raw_mtu=(yyvsp[0].intval));
	}
#line 8561 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 473:
#line 1800 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number expected"); }
#line 8567 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 474:
#line 1801 "core/cfg.y" /* yacc.c:1646  */
    {
		IF_RAW_SOCKS(default_core_cfg.udp4_raw_ttl=(yyvsp[0].intval));
	}
#line 8575 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 475:
#line 1804 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("number expected"); }
#line 8581 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 477:
#line 1806 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("unknown config variable"); }
#line 8587 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 479:
#line 1810 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.strval)="default" ; }
#line 8593 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 481:
#line 1814 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.strval)="default" ; }
#line 8599 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 482:
#line 1815 "core/cfg.y" /* yacc.c:1646  */
    {
		yyerror("cfg var field name - use of number or reserved token not allowed: %s",
				yy_number_str);
		YYERROR;
	}
#line 8609 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 483:
#line 1823 "core/cfg.y" /* yacc.c:1646  */
    {
		if (cfg_declare_int((yyvsp[-4].strval), (yyvsp[-2].strval), (yyvsp[0].intval), 0, 0, NULL)) {
			yyerror("variable cannot be declared");
		}
	}
#line 8619 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 484:
#line 1828 "core/cfg.y" /* yacc.c:1646  */
    {
		if (cfg_declare_str((yyvsp[-4].strval), (yyvsp[-2].strval), (yyvsp[0].strval), NULL)) {
			yyerror("variable cannot be declared");
		}
	}
#line 8629 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 485:
#line 1833 "core/cfg.y" /* yacc.c:1646  */
    {
		if (cfg_declare_int((yyvsp[-6].strval), (yyvsp[-4].strval), (yyvsp[-2].intval), 0, 0, (yyvsp[0].strval))) {
			yyerror("variable cannot be declared");
		}
	}
#line 8639 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 486:
#line 1838 "core/cfg.y" /* yacc.c:1646  */
    {
		if (cfg_declare_str((yyvsp[-6].strval), (yyvsp[-4].strval), (yyvsp[-2].strval), (yyvsp[0].strval))) {
			yyerror("variable cannot be declared");
		}
	}
#line 8649 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 487:
#line 1843 "core/cfg.y" /* yacc.c:1646  */
    {
		yyerror("number or string expected");
	}
#line 8657 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 488:
#line 1846 "core/cfg.y" /* yacc.c:1646  */
    {
		if (cfg_ginst_var_int((yyvsp[-7].strval), (yyvsp[-5].intval), (yyvsp[-2].strval), (yyvsp[0].intval))) {
			yyerror("variable cannot be added to the group instance");
		}
	}
#line 8667 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 489:
#line 1851 "core/cfg.y" /* yacc.c:1646  */
    {
		if (cfg_ginst_var_string((yyvsp[-7].strval), (yyvsp[-5].intval), (yyvsp[-2].strval), (yyvsp[0].strval))) {
			yyerror("variable cannot be added to the group instance");
		}
	}
#line 8677 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 490:
#line 1859 "core/cfg.y" /* yacc.c:1646  */
    {
		LM_DBG("loading module %s\n", (yyvsp[0].strval));
			if (load_module((yyvsp[0].strval))!=0) {
				yyerror("failed to load module");
			}
	}
#line 8688 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 491:
#line 1865 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("string expected"); }
#line 8694 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 492:
#line 1866 "core/cfg.y" /* yacc.c:1646  */
    {
		LM_DBG("loading module %s\n", (yyvsp[0].strval));
			if (load_modulex((yyvsp[0].strval))!=0) {
				yyerror("failed to load module");
			}
	}
#line 8705 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 493:
#line 1872 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("string expected"); }
#line 8711 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 494:
#line 1873 "core/cfg.y" /* yacc.c:1646  */
    {
		if(mods_dir_cmd==0) {
			LM_DBG("loading modules under %s\n", (yyvsp[0].strval));
			printf("loading modules under config path: %s\n", (yyvsp[0].strval));
			mods_dir = (yyvsp[0].strval);
		} else {
			LM_DBG("ignoring mod path given in config: %s\n", (yyvsp[0].strval));
			printf("loading modules under command line path: %s\n", mods_dir);
		}
	}
#line 8726 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 495:
#line 1883 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("string expected"); }
#line 8732 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 496:
#line 1884 "core/cfg.y" /* yacc.c:1646  */
    {
		if(mods_dir_cmd==0) {
			LM_DBG("loading modules under %s\n", (yyvsp[0].strval));
			printf("loading modules under config path: %s\n", (yyvsp[0].strval));
			mods_dir = (yyvsp[0].strval);
		} else {
			LM_DBG("ignoring mod path given in config: %s\n", (yyvsp[0].strval));
			printf("loading modules under command line path: %s\n", mods_dir);
		}
	}
#line 8747 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 497:
#line 1894 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("string expected"); }
#line 8753 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 498:
#line 1895 "core/cfg.y" /* yacc.c:1646  */
    {
		if (!shm_initialized() && init_shm()<0) {
			yyerror("Can't initialize shared memory");
			YYABORT;
		}
		if (set_mod_param_regex((yyvsp[-5].strval), (yyvsp[-3].strval), PARAM_STRING, (yyvsp[-1].strval)) != 0) {
			 yyerror("Can't set module parameter");
		}
	}
#line 8767 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 499:
#line 1904 "core/cfg.y" /* yacc.c:1646  */
    {
		if (!shm_initialized() && init_shm()<0) {
			yyerror("Can't initialize shared memory");
			YYABORT;
		}
		if (set_mod_param_regex((yyvsp[-5].strval), (yyvsp[-3].strval), PARAM_INT, (void*)(yyvsp[-1].intval)) != 0) {
			 yyerror("Can't set module parameter");
		}
	}
#line 8781 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 500:
#line 1913 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("Invalid arguments"); }
#line 8787 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 501:
#line 1914 "core/cfg.y" /* yacc.c:1646  */
    {
		if (!shm_initialized() && init_shm()<0) {
			yyerror("Can't initialize shared memory");
			YYABORT;
		}
		if (modparamx_set((yyvsp[-5].strval), (yyvsp[-3].strval), PARAM_STRING, (yyvsp[-1].strval)) != 0) {
			 yyerror("Can't set module parameter");
		}
	}
#line 8801 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 502:
#line 1923 "core/cfg.y" /* yacc.c:1646  */
    {
		if (!shm_initialized() && init_shm()<0) {
			yyerror("Can't initialize shared memory");
			YYABORT;
		}
		if (modparamx_set((yyvsp[-5].strval), (yyvsp[-3].strval), PARAM_INT, (void*)(yyvsp[-1].intval)) != 0) {
			 yyerror("Can't set module parameter");
		}
	}
#line 8815 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 503:
#line 1932 "core/cfg.y" /* yacc.c:1646  */
    {
		if (!shm_initialized() && init_shm()<0) {
			yyerror("Can't initialize shared memory");
			YYABORT;
		}
		if (modparamx_set((yyvsp[-5].strval), (yyvsp[-3].strval), PARAM_VAR, (void*)(yyvsp[-1].strval)) != 0) {
			 yyerror("Can't set module parameter");
		}
	}
#line 8829 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 504:
#line 1941 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("Invalid arguments"); }
#line 8835 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 505:
#line 1942 "core/cfg.y" /* yacc.c:1646  */
    {
		if(sr_kemi_eng_setz((yyvsp[0].strval), NULL)) {
			yyerror("Can't set config routing engine");
			YYABORT;
		}
	}
#line 8846 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 506:
#line 1948 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("string expected"); }
#line 8852 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 507:
#line 1949 "core/cfg.y" /* yacc.c:1646  */
    {
		if(sr_kemi_eng_setz((yyvsp[0].strval), NULL)) {
			yyerror("Can't set config routing engine");
			YYABORT;
		}
	}
#line 8863 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 508:
#line 1955 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("string expected"); }
#line 8869 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 509:
#line 1959 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.ipaddr)=(yyvsp[0].ipaddr); }
#line 8875 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 510:
#line 1960 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.ipaddr)=(yyvsp[0].ipaddr); }
#line 8881 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 511:
#line 1963 "core/cfg.y" /* yacc.c:1646  */
    {
		(yyval.ipaddr)=pkg_malloc(sizeof(struct ip_addr));
		if ((yyval.ipaddr)==0) {
			PKG_MEM_CRITICAL;
		} else {
			memset((yyval.ipaddr), 0, sizeof(struct ip_addr));
			(yyval.ipaddr)->af=AF_INET;
			(yyval.ipaddr)->len=4;
			if (((yyvsp[-6].intval)>255) || ((yyvsp[-6].intval)<0) ||
				((yyvsp[-4].intval)>255) || ((yyvsp[-4].intval)<0) ||
				((yyvsp[-2].intval)>255) || ((yyvsp[-2].intval)<0) ||
				((yyvsp[0].intval)>255) || ((yyvsp[0].intval)<0)) {
				yyerror("invalid ipv4 address");
				(yyval.ipaddr)->u.addr32[0]=0;
				/* $$=0; */
			} else {
				(yyval.ipaddr)->u.addr[0]=(yyvsp[-6].intval);
				(yyval.ipaddr)->u.addr[1]=(yyvsp[-4].intval);
				(yyval.ipaddr)->u.addr[2]=(yyvsp[-2].intval);
				(yyval.ipaddr)->u.addr[3]=(yyvsp[0].intval);
				/*
				$$=htonl( ($1<<24)|
				($3<<16)| ($5<<8)|$7 );
				*/
			}
		}
	}
#line 8913 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 512:
#line 1992 "core/cfg.y" /* yacc.c:1646  */
    {
		(yyval.ipaddr)=pkg_malloc(sizeof(struct ip_addr));
		if ((yyval.ipaddr)==0) {
			PKG_MEM_CRITICAL;
		} else {
			memset((yyval.ipaddr), 0, sizeof(struct ip_addr));
			(yyval.ipaddr)->af=AF_INET6;
			(yyval.ipaddr)->len=16;
			if (inet_pton(AF_INET6, (yyvsp[0].strval), (yyval.ipaddr)->u.addr)<=0) {
				yyerror("bad ipv6 address");
			}
		}
	}
#line 8931 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 513:
#line 2007 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.ipaddr)=(yyvsp[0].ipaddr); }
#line 8937 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 514:
#line 2008 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.ipaddr)=(yyvsp[-1].ipaddr); }
#line 8943 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 515:
#line 2012 "core/cfg.y" /* yacc.c:1646  */
    {
					tmp=int2str((yyvsp[0].intval), &i_tmp);
					if (((yyval.strval)=pkg_malloc(i_tmp+1))==0) {
						yyerror("out of  memory");
						YYABORT;
					} else {
						memcpy((yyval.strval), tmp, i_tmp);
						(yyval.strval)[i_tmp]=0;
					}
					routename = tmp;
						}
#line 8959 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 516:
#line 2023 "core/cfg.y" /* yacc.c:1646  */
    { routename = (yyvsp[0].strval); (yyval.strval)=(yyvsp[0].strval); }
#line 8965 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 517:
#line 2024 "core/cfg.y" /* yacc.c:1646  */
    { routename = (yyvsp[0].strval); (yyval.strval)=(yyvsp[0].strval); }
#line 8971 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 518:
#line 2028 "core/cfg.y" /* yacc.c:1646  */
    { routename=NULL; }
#line 8977 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 519:
#line 2029 "core/cfg.y" /* yacc.c:1646  */
    { routename=NULL; }
#line 8983 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 520:
#line 2033 "core/cfg.y" /* yacc.c:1646  */
    {
		if (!shm_initialized() && init_shm()<0) {
			yyerror("Can't initialize shared memory");
			YYABORT;
		}
		push((yyvsp[-1].action), &main_rt.rlist[DEFAULT_RT]);
	}
#line 8995 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 521:
#line 2040 "core/cfg.y" /* yacc.c:1646  */
    {
		if (!shm_initialized() && init_shm()<0) {
			yyerror("Can't initialize shared memory");
			YYABORT;
		}
		i_tmp=route_get(&main_rt, (yyvsp[-4].strval));
		if (i_tmp==-1){
			yyerror("internal error");
			YYABORT;
		}
		if (main_rt.rlist[i_tmp]){
			yyerror("duplicate route");
			YYABORT;
		}
		push((yyvsp[-1].action), &main_rt.rlist[i_tmp]);
	}
#line 9016 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 522:
#line 2056 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("invalid  route  statement"); }
#line 9022 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 523:
#line 2057 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("invalid  request_route  statement"); }
#line 9028 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 524:
#line 2060 "core/cfg.y" /* yacc.c:1646  */
    { routename=NULL; }
#line 9034 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 525:
#line 2063 "core/cfg.y" /* yacc.c:1646  */
    {
		if (!shm_initialized() && init_shm()<0) {
			yyerror("Can't initialize shared memory");
			YYABORT;
		}
		push((yyvsp[-1].action), &failure_rt.rlist[DEFAULT_RT]);
	}
#line 9046 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 526:
#line 2070 "core/cfg.y" /* yacc.c:1646  */
    {
		if (!shm_initialized() && init_shm()<0) {
			yyerror("Can't initialize shared memory");
			YYABORT;
		}
		i_tmp=route_get(&failure_rt, (yyvsp[-4].strval));
		if (i_tmp==-1){
			yyerror("internal error");
			YYABORT;
		}
		if (failure_rt.rlist[i_tmp]){
			yyerror("duplicate route");
			YYABORT;
		}
		push((yyvsp[-1].action), &failure_rt.rlist[i_tmp]);
	}
#line 9067 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 527:
#line 2086 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("invalid failure_route statement"); }
#line 9073 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 528:
#line 2090 "core/cfg.y" /* yacc.c:1646  */
    { routename=NULL; }
#line 9079 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 529:
#line 2091 "core/cfg.y" /* yacc.c:1646  */
    { routename=NULL; }
#line 9085 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 530:
#line 2096 "core/cfg.y" /* yacc.c:1646  */
    {rt=CORE_ONREPLY_ROUTE;}
#line 9091 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 531:
#line 2096 "core/cfg.y" /* yacc.c:1646  */
    {
		if (!shm_initialized() && init_shm()<0) {
			yyerror("Can't initialize shared memory");
			YYABORT;
		}
		push((yyvsp[-1].action), &onreply_rt.rlist[DEFAULT_RT]);
	}
#line 9103 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 532:
#line 2103 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("invalid onreply_route statement"); }
#line 9109 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 533:
#line 2104 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("invalid onreply_route statement"); }
#line 9115 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 534:
#line 2106 "core/cfg.y" /* yacc.c:1646  */
    {rt=(*(yyvsp[-1].strval)=='0' && (yyvsp[-1].strval)[1]==0)?CORE_ONREPLY_ROUTE:TM_ONREPLY_ROUTE;}
#line 9121 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 535:
#line 2107 "core/cfg.y" /* yacc.c:1646  */
    {
		if (!shm_initialized() && init_shm()<0) {
			yyerror("Can't initialize shared memory");
			YYABORT;
		}
		if (*(yyvsp[-5].strval)=='0' && (yyvsp[-5].strval)[1]==0){
			/* onreply_route[0] {} is equivalent with onreply_route {}*/
			push((yyvsp[-1].action), &onreply_rt.rlist[DEFAULT_RT]);
		}else{
			i_tmp=route_get(&onreply_rt, (yyvsp[-5].strval));
			if (i_tmp==-1){
				yyerror("internal error");
				YYABORT;
			}
			if (onreply_rt.rlist[i_tmp]){
				yyerror("duplicate route");
				YYABORT;
			}
			push((yyvsp[-1].action), &onreply_rt.rlist[i_tmp]);
		}
	}
#line 9147 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 536:
#line 2128 "core/cfg.y" /* yacc.c:1646  */
    {
		yyerror("invalid onreply_route statement");
	}
#line 9155 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 537:
#line 2133 "core/cfg.y" /* yacc.c:1646  */
    { routename=NULL; }
#line 9161 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 538:
#line 2136 "core/cfg.y" /* yacc.c:1646  */
    {
		if (!shm_initialized() && init_shm()<0) {
			yyerror("Can't initialize shared memory");
			YYABORT;
		}
		push((yyvsp[-1].action), &branch_rt.rlist[DEFAULT_RT]);
	}
#line 9173 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 539:
#line 2143 "core/cfg.y" /* yacc.c:1646  */
    {
		if (!shm_initialized() && init_shm()<0) {
			yyerror("Can't initialize shared memory");
			YYABORT;
		}
		i_tmp=route_get(&branch_rt, (yyvsp[-4].strval));
		if (i_tmp==-1){
			yyerror("internal error");
			YYABORT;
		}
		if (branch_rt.rlist[i_tmp]){
			yyerror("duplicate route");
			YYABORT;
		}
		push((yyvsp[-1].action), &branch_rt.rlist[i_tmp]);
	}
#line 9194 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 540:
#line 2159 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("invalid branch_route statement"); }
#line 9200 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 541:
#line 2162 "core/cfg.y" /* yacc.c:1646  */
    { routename=NULL; }
#line 9206 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 542:
#line 2165 "core/cfg.y" /* yacc.c:1646  */
    {
		if (!shm_initialized() && init_shm()<0) {
			yyerror("Can't initialize shared memory");
			YYABORT;
		}
		push((yyvsp[-1].action), &onsend_rt.rlist[DEFAULT_RT]);
	}
#line 9218 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 543:
#line 2172 "core/cfg.y" /* yacc.c:1646  */
    {
		if (!shm_initialized() && init_shm()<0) {
			yyerror("Can't initialize shared memory");
			YYABORT;
		}
		i_tmp=route_get(&onsend_rt, (yyvsp[-4].strval));
		if (i_tmp==-1){
			yyerror("internal error");
			YYABORT;
		}
		if (onsend_rt.rlist[i_tmp]){
			yyerror("duplicate route");
			YYABORT;
		}
		push((yyvsp[-1].action), &onsend_rt.rlist[i_tmp]);
	}
#line 9239 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 544:
#line 2188 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("invalid onsend_route statement"); }
#line 9245 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 545:
#line 2191 "core/cfg.y" /* yacc.c:1646  */
    { routename=NULL; }
#line 9251 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 546:
#line 2194 "core/cfg.y" /* yacc.c:1646  */
    {
		if (!shm_initialized() && init_shm()<0) {
			yyerror("Can't initialize shared memory");
			YYABORT;
		}
		i_tmp=route_get(&event_rt, (yyvsp[-4].strval));
		if (i_tmp==-1){
			yyerror("internal error");
			YYABORT;
		}
		if (event_rt.rlist[i_tmp]){
			yyerror("duplicate route");
			YYABORT;
		}
		push((yyvsp[-1].action), &event_rt.rlist[i_tmp]);
	}
#line 9272 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 547:
#line 2211 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("invalid event_route statement"); }
#line 9278 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 548:
#line 2214 "core/cfg.y" /* yacc.c:1646  */
    { if(pp_subst_add((yyvsp[0].strval))<0) YYERROR; }
#line 9284 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 549:
#line 2215 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("invalid subst preprocess statement"); }
#line 9290 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 550:
#line 2216 "core/cfg.y" /* yacc.c:1646  */
    { if(pp_substdef_add((yyvsp[0].strval), 0)<0) YYERROR; }
#line 9296 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 551:
#line 2217 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("invalid substdef preprocess statement"); }
#line 9302 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 552:
#line 2218 "core/cfg.y" /* yacc.c:1646  */
    { if(pp_substdef_add((yyvsp[0].strval), 1)<0) YYERROR; }
#line 9308 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 553:
#line 2219 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("invalid substdefs preprocess statement"); }
#line 9314 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 554:
#line 2241 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.intval)=EQUAL_OP; }
#line 9320 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 555:
#line 2242 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.intval)=DIFF_OP; }
#line 9326 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 556:
#line 2243 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.intval)=EQUAL_OP; }
#line 9332 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 557:
#line 2244 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.intval)=DIFF_OP; }
#line 9338 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 558:
#line 2247 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.intval)=GT_OP; }
#line 9344 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 559:
#line 2248 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.intval)=LT_OP; }
#line 9350 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 560:
#line 2249 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.intval)=GTE_OP; }
#line 9356 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 561:
#line 2250 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.intval)=LTE_OP; }
#line 9362 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 562:
#line 2253 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.intval)=(yyvsp[0].intval); }
#line 9368 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 563:
#line 2254 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.intval)=MATCH_OP; }
#line 9374 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 564:
#line 2260 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.intval)=RVE_EQ_OP; }
#line 9380 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 565:
#line 2261 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.intval)=RVE_DIFF_OP; }
#line 9386 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 566:
#line 2262 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.intval)=RVE_IEQ_OP; }
#line 9392 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 567:
#line 2263 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.intval)=RVE_IDIFF_OP; }
#line 9398 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 568:
#line 2264 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.intval)=RVE_STREQ_OP; }
#line 9404 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 569:
#line 2265 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.intval)=RVE_STRDIFF_OP; }
#line 9410 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 570:
#line 2266 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.intval)=RVE_MATCH_OP; }
#line 9416 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 571:
#line 2269 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.intval)=RVE_GT_OP; }
#line 9422 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 572:
#line 2270 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.intval)=RVE_LT_OP; }
#line 9428 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 573:
#line 2271 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.intval)=RVE_GTE_OP; }
#line 9434 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 574:
#line 2272 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.intval)=RVE_LTE_OP; }
#line 9440 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 575:
#line 2279 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.intval)=URI_O;}
#line 9446 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 576:
#line 2280 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.intval)=FROM_URI_O;}
#line 9452 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 577:
#line 2281 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.intval)=TO_URI_O;}
#line 9458 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 578:
#line 2288 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.intval)=SNDPORT_O; }
#line 9464 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 579:
#line 2289 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.intval)=TOPORT_O; }
#line 9470 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 580:
#line 2290 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.intval)=SNDAF_O; }
#line 9476 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 581:
#line 2294 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.intval)=SRCPORT_O; }
#line 9482 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 582:
#line 2295 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.intval)=DSTPORT_O; }
#line 9488 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 583:
#line 2296 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.intval)=AF_O; }
#line 9494 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 584:
#line 2297 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.intval)=MSGLEN_O; }
#line 9500 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 586:
#line 2303 "core/cfg.y" /* yacc.c:1646  */
    { onsend_check("snd_ip"); (yyval.intval)=SNDIP_O; }
#line 9506 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 587:
#line 2304 "core/cfg.y" /* yacc.c:1646  */
    { onsend_check("to_ip");  (yyval.intval)=TOIP_O; }
#line 9512 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 588:
#line 2307 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.intval)=SRCIP_O; }
#line 9518 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 589:
#line 2308 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.intval)=DSTIP_O; }
#line 9524 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 591:
#line 2316 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.expr)= mk_elem((yyvsp[-1].intval), METHOD_O, 0, RVE_ST, (yyvsp[0].rv_expr));}
#line 9530 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 592:
#line 2318 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.expr) = mk_elem((yyvsp[-1].intval), METHOD_O, 0, STRING_ST,(yyvsp[0].strval)); }
#line 9536 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 593:
#line 2319 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.expr)=0; yyerror("string expected"); }
#line 9542 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 594:
#line 2321 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.expr)=0; yyerror("invalid operator,== , !=, or =~ expected"); }
#line 9548 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 595:
#line 2323 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.expr) = mk_elem((yyvsp[-1].intval), (yyvsp[-2].intval), 0, RVE_ST, (yyvsp[0].rv_expr)); }
#line 9554 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 596:
#line 2325 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.expr)=mk_elem((yyvsp[-1].intval), (yyvsp[-2].intval), 0, MYSELF_ST, 0); }
#line 9560 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 597:
#line 2327 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.expr)=0; yyerror("string or MYSELF expected"); }
#line 9566 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 598:
#line 2329 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.expr)=0; yyerror("invalid operator, == , != or =~ expected"); }
#line 9572 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 599:
#line 2330 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.expr)=mk_elem((yyvsp[-1].intval), (yyvsp[-2].intval), 0, RVE_ST, (yyvsp[0].rv_expr) ); }
#line 9578 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 600:
#line 2332 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.expr)=mk_elem((yyvsp[-1].intval), (yyvsp[-2].intval), 0, RVE_ST, (yyvsp[0].rv_expr) ); }
#line 9584 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 601:
#line 2333 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.expr)=0; yyerror("number expected"); }
#line 9590 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 602:
#line 2334 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.expr)=0; yyerror("number expected"); }
#line 9596 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 603:
#line 2335 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.expr)=0; yyerror("==, !=, <,>, >= or <=  expected"); }
#line 9602 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 604:
#line 2337 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.expr)=mk_elem((yyvsp[-1].intval), PROTO_O, 0, NUMBER_ST, (void*)(yyvsp[0].intval) ); }
#line 9608 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 605:
#line 2339 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.expr)=mk_elem((yyvsp[-1].intval), PROTO_O, 0, RVE_ST, (yyvsp[0].rv_expr) ); }
#line 9614 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 606:
#line 2341 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.expr)=0; yyerror("protocol expected (udp, tcp, tls, sctp, ws, or wss)"); }
#line 9620 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 607:
#line 2343 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.expr)=mk_elem((yyvsp[-1].intval), SNDPROTO_O, 0, NUMBER_ST, (void*)(yyvsp[0].intval) ); }
#line 9626 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 608:
#line 2345 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.expr)=mk_elem((yyvsp[-1].intval), SNDPROTO_O, 0, RVE_ST, (yyvsp[0].rv_expr) ); }
#line 9632 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 609:
#line 2347 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.expr)=0; yyerror("protocol expected (udp, tcp, tls, sctp, ws, or wss)"); }
#line 9638 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 610:
#line 2348 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.expr)=mk_elem((yyvsp[-1].intval), (yyvsp[-2].intval), 0, NET_ST, (yyvsp[0].ipnet)); }
#line 9644 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 611:
#line 2349 "core/cfg.y" /* yacc.c:1646  */
    {
			s_tmp.s=0;
			(yyval.expr)=0;
			if (rve_is_constant((yyvsp[0].rv_expr))){
				i_tmp=rve_guess_type((yyvsp[0].rv_expr));
				if (i_tmp==RV_INT)
					yyerror("string expected");
				else if (i_tmp==RV_STR){
					if (((rval_tmp=rval_expr_eval(0, 0, (yyvsp[0].rv_expr)))==0) ||
								(rval_get_str(0, 0, &s_tmp, rval_tmp, 0)<0)){
						rval_destroy(rval_tmp);
						yyerror("bad rvalue expression");
					}else{
						rval_destroy(rval_tmp);
					}
				}else{
					yyerror("BUG: unexpected dynamic type");
				}
			}else{
					/* warn("non constant rvalue in ip comparison") */;
			}
			if (s_tmp.s){
				ip_tmp=str2ip(&s_tmp);
				if (ip_tmp==0)
					ip_tmp=str2ip6(&s_tmp);
				pkg_free(s_tmp.s);
				if (ip_tmp) {
					(yyval.expr)=mk_elem((yyvsp[-1].intval), (yyvsp[-2].intval), 0, NET_ST,
								mk_new_net_bitlen(ip_tmp, ip_tmp->len*8) );
				} else {
					(yyval.expr)=mk_elem((yyvsp[-1].intval), (yyvsp[-2].intval), 0, RVE_ST, (yyvsp[0].rv_expr));
				}
			}else{
				(yyval.expr)=mk_elem((yyvsp[-1].intval), (yyvsp[-2].intval), 0, RVE_ST, (yyvsp[0].rv_expr));
			}
		}
#line 9685 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 612:
#line 2386 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.expr)=mk_elem((yyvsp[-1].intval), (yyvsp[-2].intval), 0, STRING_ST, (yyvsp[0].strval)); }
#line 9691 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 613:
#line 2388 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.expr)=mk_elem((yyvsp[-1].intval), (yyvsp[-2].intval), 0, MYSELF_ST, 0); }
#line 9697 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 614:
#line 2390 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.expr)=0; yyerror( "ip address or hostname expected" ); }
#line 9703 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 615:
#line 2392 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.expr)=0; yyerror("invalid operator, ==, != or =~ expected");}
#line 9709 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 616:
#line 2395 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.expr)=mk_elem((yyvsp[-1].intval), (yyvsp[0].intval), 0, MYSELF_ST, 0); }
#line 9715 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 617:
#line 2397 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.expr)=mk_elem((yyvsp[-1].intval), (yyvsp[0].intval), 0, MYSELF_ST, 0); }
#line 9721 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 618:
#line 2399 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.expr)=0; yyerror("URI, SRCIP or DSTIP expected"); }
#line 9727 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 619:
#line 2400 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.expr)=0; yyerror ("invalid operator, == or != expected"); }
#line 9733 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 620:
#line 2404 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.ipnet)=mk_new_net((yyvsp[-2].ipaddr), (yyvsp[0].ipaddr)); }
#line 9739 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 621:
#line 2405 "core/cfg.y" /* yacc.c:1646  */
    {
		if (((yyvsp[0].intval)<0) || ((yyvsp[0].intval)>(yyvsp[-2].ipaddr)->len*8)) {
			yyerror("invalid bit number in netmask");
			(yyval.ipnet)=0;
		} else {
			(yyval.ipnet)=mk_new_net_bitlen((yyvsp[-2].ipaddr), (yyvsp[0].intval));
		/*
			$$=mk_new_net($1, htonl( ($3)?~( (1<<(32-$3))-1 ):0 ) );
		*/
		}
	}
#line 9755 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 622:
#line 2416 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.ipnet)=mk_new_net_bitlen((yyvsp[0].ipaddr), (yyvsp[0].ipaddr)->len*8); }
#line 9761 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 623:
#line 2417 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.ipnet)=0; yyerror("netmask (eg:255.0.0.0 or 8) expected"); }
#line 9767 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 624:
#line 2421 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.strval)=(yyvsp[0].strval); }
#line 9773 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 625:
#line 2422 "core/cfg.y" /* yacc.c:1646  */
    {
		if ((yyvsp[-2].strval)){
			(yyval.strval)=(char*)pkg_malloc(strlen((yyvsp[-2].strval))+1+strlen((yyvsp[0].strval))+1);
			if ((yyval.strval)==0) {
				PKG_MEM_CRITICAL;
			} else {
				memcpy((yyval.strval), (yyvsp[-2].strval), strlen((yyvsp[-2].strval)));
				(yyval.strval)[strlen((yyvsp[-2].strval))]='.';
				memcpy((yyval.strval)+strlen((yyvsp[-2].strval))+1, (yyvsp[0].strval), strlen((yyvsp[0].strval)));
				(yyval.strval)[strlen((yyvsp[-2].strval))+1+strlen((yyvsp[0].strval))]=0;
			}
			pkg_free((yyvsp[-2].strval));
		}
		if ((yyvsp[0].strval)) pkg_free((yyvsp[0].strval));
	}
#line 9793 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 626:
#line 2437 "core/cfg.y" /* yacc.c:1646  */
    {
		if ((yyvsp[-2].strval)){
			(yyval.strval)=(char*)pkg_malloc(strlen((yyvsp[-2].strval))+1+strlen((yyvsp[0].strval))+1);
			if ((yyval.strval)==0) {
				PKG_MEM_CRITICAL;
			} else {
				memcpy((yyval.strval), (yyvsp[-2].strval), strlen((yyvsp[-2].strval)));
				(yyval.strval)[strlen((yyvsp[-2].strval))]='-';
				memcpy((yyval.strval)+strlen((yyvsp[-2].strval))+1, (yyvsp[0].strval), strlen((yyvsp[0].strval)));
				(yyval.strval)[strlen((yyvsp[-2].strval))+1+strlen((yyvsp[0].strval))]=0;
			}
			pkg_free((yyvsp[-2].strval));
		}
		if ((yyvsp[0].strval)) pkg_free((yyvsp[0].strval));
	}
#line 9813 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 627:
#line 2452 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.strval)=0; pkg_free((yyvsp[-2].strval)); yyerror("invalid hostname"); }
#line 9819 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 628:
#line 2453 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.strval)=0; pkg_free((yyvsp[-2].strval)); yyerror("invalid hostname"); }
#line 9825 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 631:
#line 2458 "core/cfg.y" /* yacc.c:1646  */
    {
			/* get string version */
			(yyval.strval)=pkg_malloc(strlen(yy_number_str)+1);
			if ((yyval.strval)==0) {
				PKG_MEM_ERROR;
			} else {
				strcpy((yyval.strval), yy_number_str);
			}
		}
#line 9839 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 632:
#line 2470 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.strval)=(yyvsp[0].strval); }
#line 9845 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 633:
#line 2471 "core/cfg.y" /* yacc.c:1646  */
    {
		if ((yyvsp[-2].strval)){
			(yyval.strval)=(char*)pkg_malloc(strlen((yyvsp[-2].strval))+1+strlen((yyvsp[0].strval))+1);
			if ((yyval.strval)==0) {
				PKG_MEM_CRITICAL;
			} else {
				memcpy((yyval.strval), (yyvsp[-2].strval), strlen((yyvsp[-2].strval)));
				(yyval.strval)[strlen((yyvsp[-2].strval))]='.';
				memcpy((yyval.strval)+strlen((yyvsp[-2].strval))+1, (yyvsp[0].strval), strlen((yyvsp[0].strval)));
				(yyval.strval)[strlen((yyvsp[-2].strval))+1+strlen((yyvsp[0].strval))]=0;
			}
			pkg_free((yyvsp[-2].strval));
		}
		if ((yyvsp[0].strval)) pkg_free((yyvsp[0].strval));
	}
#line 9865 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 634:
#line 2486 "core/cfg.y" /* yacc.c:1646  */
    {
		if ((yyvsp[-2].strval)){
			(yyval.strval)=(char*)pkg_malloc(strlen((yyvsp[-2].strval))+1+strlen((yyvsp[0].strval))+1);
			if ((yyval.strval)==0) {
				PKG_MEM_CRITICAL;
			} else {
				memcpy((yyval.strval), (yyvsp[-2].strval), strlen((yyvsp[-2].strval)));
				(yyval.strval)[strlen((yyvsp[-2].strval))]='-';
				memcpy((yyval.strval)+strlen((yyvsp[-2].strval))+1, (yyvsp[0].strval), strlen((yyvsp[0].strval)));
				(yyval.strval)[strlen((yyvsp[-2].strval))+1+strlen((yyvsp[0].strval))]=0;
			}
			pkg_free((yyvsp[-2].strval));
		}
		if ((yyvsp[0].strval)) pkg_free((yyvsp[0].strval));
	}
#line 9885 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 635:
#line 2501 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.strval)=0; pkg_free((yyvsp[-2].strval));
								yyerror("invalid host or interface name"); }
#line 9892 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 636:
#line 2503 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.strval)=0; pkg_free((yyvsp[-2].strval));
								yyerror("invalid host or interface name"); }
#line 9899 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 637:
#line 2510 "core/cfg.y" /* yacc.c:1646  */
    {
		/* check if allowed */
		if ((yyvsp[0].action) && rt==ONSEND_ROUTE) {
			switch((yyvsp[0].action)->type) {
				case DROP_T:
				case LOG_T:
				case SETFLAG_T:
				case RESETFLAG_T:
				case ISFLAGSET_T:
				case IF_T:
				case MODULE0_T:
				case MODULE1_T:
				case MODULE2_T:
				case MODULE3_T:
				case MODULE4_T:
				case MODULE5_T:
				case MODULE6_T:
				case MODULEX_T:
				case SET_FWD_NO_CONNECT_T:
				case SET_RPL_NO_CONNECT_T:
				case SET_FWD_CLOSE_T:
				case SET_RPL_CLOSE_T:
					(yyval.action)=(yyvsp[0].action);
					break;
				default:
					(yyval.action)=0;
					yyerror("command not allowed in onsend_route\n");
			}
		} else {
			(yyval.action)=(yyvsp[0].action);
		}
	}
#line 9936 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 638:
#line 2552 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=(yyvsp[0].action); }
#line 9942 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 639:
#line 2553 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=(yyvsp[-1].action); }
#line 9948 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 640:
#line 2556 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.action)=append_action((yyvsp[-1].action), (yyvsp[0].action)); }
#line 9954 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 641:
#line 2557 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.action)=(yyvsp[0].action);}
#line 9960 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 642:
#line 2558 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=0; yyerror("bad command"); }
#line 9966 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 643:
#line 2561 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.action)=(yyvsp[-1].action);}
#line 9972 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 644:
#line 2562 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.action)=(yyvsp[0].action);}
#line 9978 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 645:
#line 2563 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.action)=(yyvsp[0].action);}
#line 9984 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 646:
#line 2564 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=(yyvsp[0].action); }
#line 9990 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 647:
#line 2565 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=(yyvsp[-1].action); }
#line 9996 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 648:
#line 2566 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.action)=(yyvsp[-1].action);}
#line 10002 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 649:
#line 2567 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.action)=0;}
#line 10008 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 650:
#line 2568 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=0; yyerror("bad command: missing ';'?"); }
#line 10014 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 651:
#line 2571 "core/cfg.y" /* yacc.c:1646  */
    {
		if ((yyvsp[-1].rv_expr) && rval_expr_int_check((yyvsp[-1].rv_expr))>=0){
			warn_ct_rve((yyvsp[-1].rv_expr), "if");
			(yyval.action)=mk_action( IF_T, 3, RVE_ST, (yyvsp[-1].rv_expr), ACTIONS_ST, (yyvsp[0].action), NOSUBTYPE, 0);
			set_cfg_pos((yyval.action));
		}else
			YYERROR;
	}
#line 10027 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 652:
#line 2579 "core/cfg.y" /* yacc.c:1646  */
    {
		if ((yyvsp[-3].rv_expr) && rval_expr_int_check((yyvsp[-3].rv_expr))>=0){
			warn_ct_rve((yyvsp[-3].rv_expr), "if");
			(yyval.action)=mk_action( IF_T, 3, RVE_ST, (yyvsp[-3].rv_expr), ACTIONS_ST, (yyvsp[-2].action), ACTIONS_ST, (yyvsp[0].action));
			set_cfg_pos((yyval.action));
		}else
			YYERROR;
	}
#line 10040 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 653:
#line 2589 "core/cfg.y" /* yacc.c:1646  */
    {
			(yyval.rv_expr)=0;
			if ((yyvsp[0].rv_expr) && !rve_is_constant((yyvsp[0].rv_expr))){
				yyerror("constant expected");
				YYERROR;
			/*
			} else if ($1 &&
						!rve_check_type((enum rval_type*)&i_tmp, $1, 0, 0 ,0)){
				yyerror("invalid expression (bad type)");
			}else if ($1 && i_tmp!=RV_INT){
				yyerror("invalid expression type, int expected\n");
			*/
			}else
				(yyval.rv_expr)=(yyvsp[0].rv_expr);
		}
#line 10060 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 654:
#line 2606 "core/cfg.y" /* yacc.c:1646  */
    {
		(yyval.case_stms)=0;
		if ((yyvsp[-2].rv_expr)==0) { yyerror ("bad case label"); YYERROR; }
		else if ((((yyval.case_stms)=mk_case_stm((yyvsp[-2].rv_expr), 0, (yyvsp[0].action), &i_tmp))==0) && (i_tmp==-10)){
				YYABORT;
		}
	}
#line 10072 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 655:
#line 2613 "core/cfg.y" /* yacc.c:1646  */
    {
		(yyval.case_stms)=0;
		if ((yyvsp[-2].rv_expr)==0) { yyerror ("bad case label"); YYERROR; }
		else if ((((yyval.case_stms)=mk_case_stm((yyvsp[-2].rv_expr), 1, (yyvsp[0].action), &i_tmp))==0) && (i_tmp==-10)){
				YYABORT;
		}
	}
#line 10084 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 656:
#line 2620 "core/cfg.y" /* yacc.c:1646  */
    {
		(yyval.case_stms)=0;
		if ((yyvsp[-1].rv_expr)==0) { yyerror ("bad case label"); YYERROR; }
		else if ((((yyval.case_stms)=mk_case_stm((yyvsp[-1].rv_expr), 0, 0, &i_tmp))==0) && (i_tmp==-10)){
				YYABORT;
		}
	}
#line 10096 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 657:
#line 2627 "core/cfg.y" /* yacc.c:1646  */
    {
		(yyval.case_stms)=0;
		if ((yyvsp[-1].rv_expr)==0) { yyerror ("bad regex case label"); YYERROR; }
		else if ((((yyval.case_stms)=mk_case_stm((yyvsp[-1].rv_expr), 1, 0, &i_tmp))==0) && (i_tmp==-10)){
				YYABORT;
		}
	}
#line 10108 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 658:
#line 2634 "core/cfg.y" /* yacc.c:1646  */
    {
		if ((((yyval.case_stms)=mk_case_stm(0, 0, (yyvsp[0].action), &i_tmp))==0) && (i_tmp==-10)){
				YYABORT;
		}
	}
#line 10118 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 659:
#line 2639 "core/cfg.y" /* yacc.c:1646  */
    {
		if ((((yyval.case_stms)=mk_case_stm(0, 0, 0, &i_tmp))==0) && (i_tmp==-10)){
				YYABORT;
		}
	}
#line 10128 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 660:
#line 2644 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.case_stms)=0; yyerror("bad case label"); }
#line 10134 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 661:
#line 2645 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.case_stms)=0; yyerror("bad case regex label"); }
#line 10140 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 662:
#line 2646 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.case_stms)=0; yyerror("bad case label"); }
#line 10146 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 663:
#line 2647 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.case_stms)=0; yyerror("bad case regex label"); }
#line 10152 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 664:
#line 2648 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.case_stms)=0; yyerror ("bad case body"); }
#line 10158 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 665:
#line 2651 "core/cfg.y" /* yacc.c:1646  */
    {
		(yyval.case_stms)=(yyvsp[-1].case_stms);
		if ((yyvsp[0].case_stms)==0) yyerror ("bad case");
		if ((yyval.case_stms)){
			*((yyval.case_stms)->append)=(yyvsp[0].case_stms);
			if (*((yyval.case_stms)->append)!=0)
				(yyval.case_stms)->append=&((*((yyval.case_stms)->append))->next);
		}
	}
#line 10172 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 666:
#line 2660 "core/cfg.y" /* yacc.c:1646  */
    {
		(yyval.case_stms)=(yyvsp[0].case_stms);
		if ((yyvsp[0].case_stms)==0) yyerror ("bad case");
		else (yyval.case_stms)->append=&((yyval.case_stms)->next);
	}
#line 10182 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 667:
#line 2667 "core/cfg.y" /* yacc.c:1646  */
    {
		(yyval.action)=0;
		if ((yyvsp[-3].rv_expr)==0){
			yyerror("bad expression in switch(...)");
			YYERROR;
		}else if ((yyvsp[-1].case_stms)==0){
			yyerror ("bad switch body");
			YYERROR;
		}else if (case_check_default((yyvsp[-1].case_stms))!=0){
			yyerror_at(&(yyvsp[-3].rv_expr)->fpos, "bad switch(): too many "
							"\"default:\" labels\n");
			YYERROR;
		}else if (case_check_type((yyvsp[-1].case_stms))!=0){
			yyerror_at(&(yyvsp[-3].rv_expr)->fpos, "bad switch(): mixed integer and"
							" string/RE cases not allowed\n");
			YYERROR;
		}else{
			(yyval.action)=mk_action(SWITCH_T, 2, RVE_ST, (yyvsp[-3].rv_expr), CASE_ST, (yyvsp[-1].case_stms));
			if ((yyval.action)==0) {
				yyerror("internal error");
				YYABORT;
			}
			set_cfg_pos((yyval.action));
		}
	}
#line 10212 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 668:
#line 2692 "core/cfg.y" /* yacc.c:1646  */
    {
		(yyval.action)=0;
		warn("empty switch()");
		if ((yyvsp[-2].rv_expr)==0){
			yyerror("bad expression in switch(...)");
			YYERROR;
		}else{
			/* it might have sideffects, so leave it for the optimizer */
			(yyval.action)=mk_action(SWITCH_T, 2, RVE_ST, (yyvsp[-2].rv_expr), CASE_ST, 0);
			if ((yyval.action)==0) {
				yyerror("internal error");
				YYABORT;
			}
			set_cfg_pos((yyval.action));
		}
	}
#line 10233 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 669:
#line 2708 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=0; yyerror ("bad expression in switch(...)"); }
#line 10239 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 670:
#line 2710 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.action)=0; yyerror ("bad switch body"); }
#line 10245 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 671:
#line 2714 "core/cfg.y" /* yacc.c:1646  */
    {
		if ((yyvsp[-1].rv_expr) && rval_expr_int_check((yyvsp[-1].rv_expr))>=0){
			warn_ct_rve((yyvsp[-1].rv_expr), "while");
			(yyval.action)=mk_action( WHILE_T, 2, RVE_ST, (yyvsp[-1].rv_expr), ACTIONS_ST, (yyvsp[0].action));
			set_cfg_pos((yyval.action));
		}else{
			yyerror_at(&(yyvsp[-1].rv_expr)->fpos, "bad while(...) expression");
			YYERROR;
		}
	}
#line 10260 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 672:
#line 2733 "core/cfg.y" /* yacc.c:1646  */
    {
		if (sel.n >= MAX_SELECT_PARAMS-1) {
			yyerror("Select identifier too long\n");
		}
		sel.params[sel.n].type = SEL_PARAM_STR;
		sel.params[sel.n].v.s.s = (yyvsp[0].strval);
		sel.params[sel.n].v.s.len = strlen((yyvsp[0].strval));
		sel.n++;
	}
#line 10274 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 673:
#line 2742 "core/cfg.y" /* yacc.c:1646  */
    {
		if (sel.n >= MAX_SELECT_PARAMS-2) {
			yyerror("Select identifier too long\n");
		}
		sel.params[sel.n].type = SEL_PARAM_STR;
		sel.params[sel.n].v.s.s = (yyvsp[-3].strval);
		sel.params[sel.n].v.s.len = strlen((yyvsp[-3].strval));
		sel.n++;
		sel.params[sel.n].type = SEL_PARAM_INT;
		sel.params[sel.n].v.i = (yyvsp[-1].intval);
		sel.n++;
	}
#line 10291 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 674:
#line 2754 "core/cfg.y" /* yacc.c:1646  */
    {
		if (sel.n >= MAX_SELECT_PARAMS-2) {
			yyerror("Select identifier too long\n");
		}
		sel.params[sel.n].type = SEL_PARAM_STR;
		sel.params[sel.n].v.s.s = (yyvsp[-3].strval);
		sel.params[sel.n].v.s.len = strlen((yyvsp[-3].strval));
		sel.n++;
		sel.params[sel.n].type = SEL_PARAM_STR;
		sel.params[sel.n].v.s.s = (yyvsp[-1].strval);
		sel.params[sel.n].v.s.len = strlen((yyvsp[-1].strval));
		sel.n++;
	}
#line 10309 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 677:
#line 2773 "core/cfg.y" /* yacc.c:1646  */
    { sel.n = 0; sel.f[0] = 0; }
#line 10315 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 678:
#line 2773 "core/cfg.y" /* yacc.c:1646  */
    {
		sel_ptr = (select_t*)pkg_malloc(sizeof(select_t));
		if (!sel_ptr) {
			yyerror("No memory left to allocate select structure\n");
		}
		memcpy(sel_ptr, &sel, sizeof(select_t));
		(yyval.select) = sel_ptr;
	}
#line 10328 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 679:
#line 2783 "core/cfg.y" /* yacc.c:1646  */
    { s_attr->type |= AVP_TRACK_FROM; }
#line 10334 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 680:
#line 2784 "core/cfg.y" /* yacc.c:1646  */
    { s_attr->type |= AVP_TRACK_TO; }
#line 10340 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 681:
#line 2785 "core/cfg.y" /* yacc.c:1646  */
    { s_attr->type |= AVP_TRACK_FROM | AVP_CLASS_URI; }
#line 10346 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 682:
#line 2786 "core/cfg.y" /* yacc.c:1646  */
    { s_attr->type |= AVP_TRACK_TO | AVP_CLASS_URI; }
#line 10352 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 683:
#line 2787 "core/cfg.y" /* yacc.c:1646  */
    { s_attr->type |= AVP_TRACK_FROM | AVP_CLASS_USER; }
#line 10358 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 684:
#line 2788 "core/cfg.y" /* yacc.c:1646  */
    { s_attr->type |= AVP_TRACK_TO | AVP_CLASS_USER; }
#line 10364 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 685:
#line 2789 "core/cfg.y" /* yacc.c:1646  */
    { s_attr->type |= AVP_TRACK_FROM | AVP_CLASS_DOMAIN; }
#line 10370 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 686:
#line 2790 "core/cfg.y" /* yacc.c:1646  */
    { s_attr->type |= AVP_TRACK_TO | AVP_CLASS_DOMAIN; }
#line 10376 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 687:
#line 2791 "core/cfg.y" /* yacc.c:1646  */
    { s_attr->type |= AVP_TRACK_ALL | AVP_CLASS_GLOBAL; }
#line 10382 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 688:
#line 2794 "core/cfg.y" /* yacc.c:1646  */
    { s_attr->type |= AVP_NAME_STR; s_attr->name.s.s = (yyvsp[0].strval); s_attr->name.s.len = strlen ((yyvsp[0].strval)); }
#line 10388 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 691:
#line 2801 "core/cfg.y" /* yacc.c:1646  */
    {
		s_attr = (struct avp_spec*)pkg_malloc(sizeof(struct avp_spec));
		if (!s_attr) { yyerror("No memory left"); YYABORT; }
		else { memset(s_attr, 0, (sizeof(struct avp_spec))); }
	}
#line 10398 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 692:
#line 2808 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.attr) = s_attr; }
#line 10404 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 693:
#line 2811 "core/cfg.y" /* yacc.c:1646  */
    {
		s_attr->type|= (AVP_NAME_STR | ((yyvsp[-1].intval)<0?AVP_INDEX_BACKWARD:AVP_INDEX_FORWARD));
		s_attr->index = ((yyvsp[-1].intval)<0?-(yyvsp[-1].intval):(yyvsp[-1].intval));
		(yyval.attr) = s_attr;
	}
#line 10414 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 694:
#line 2818 "core/cfg.y" /* yacc.c:1646  */
    {
		s_attr->type|= AVP_INDEX_ALL;
		(yyval.attr) = s_attr;
	}
#line 10423 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 701:
#line 2840 "core/cfg.y" /* yacc.c:1646  */
    {
		if ((yyvsp[0].lval)->type==LV_AVP){
			s_attr = pkg_malloc(sizeof(struct avp_spec));
			if (!s_attr) { yyerror("No memory left"); YYABORT; }
			else{
				*s_attr=(yyvsp[0].lval)->lv.avps;
			}
			(yyval.attr)=s_attr;
		}else
			(yyval.attr)=0; /* not an avp, a pvar */
		pkg_free((yyvsp[0].lval));
	}
#line 10440 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 702:
#line 2852 "core/cfg.y" /* yacc.c:1646  */
    {
		avp_spec_t *avp_spec;
		str s;
		int type, idx;
		avp_spec = pkg_malloc(sizeof(*avp_spec));
		if (!avp_spec) {
			yyerror("Not enough memory");
			YYABORT;
		}
		s.s = (yyvsp[0].strval);
		if (s.s[0] == '$')
			s.s++;
		s.len = strlen(s.s);
		if (parse_avp_name(&s, &type, &avp_spec->name, &idx)) {
			yyerror("error when parsing AVP");
			pkg_free(avp_spec);
			YYABORT;
		}
		avp_spec->type = type;
		avp_spec->index = idx;
		(yyval.attr) = avp_spec;
	}
#line 10467 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 703:
#line 2876 "core/cfg.y" /* yacc.c:1646  */
    {
			s_tmp.s=(yyvsp[0].strval); s_tmp.len=strlen((yyvsp[0].strval));
			pv_spec=pv_cache_get(&s_tmp);
			if (!pv_spec) {
				yyerror("Can't get from cache: %s", (yyvsp[0].strval));
				YYABORT;
			}
			(yyval.pvar)=pv_spec;
		}
#line 10481 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 704:
#line 2887 "core/cfg.y" /* yacc.c:1646  */
    {
				lval_tmp=pkg_malloc(sizeof(*lval_tmp));
				if (!lval_tmp) {
					yyerror("Not enough memory");
					YYABORT;
				}
				memset(lval_tmp, 0, sizeof(*lval_tmp));
				s_tmp.s=(yyvsp[0].strval); s_tmp.len=strlen(s_tmp.s);
				lval_tmp->lv.pvs = pv_cache_get(&s_tmp);
				if (lval_tmp->lv.pvs==NULL){
					lval_tmp->lv.avps.type|= AVP_NAME_STR;
					lval_tmp->lv.avps.name.s.s = s_tmp.s+1;
					lval_tmp->lv.avps.name.s.len = s_tmp.len-1;
					lval_tmp->type=LV_AVP;
				}else{
					lval_tmp->type=LV_PVAR;
				}
				(yyval.lval) = lval_tmp;
				DBG("parsed ambiguous avp/pvar \"%.*s\" to %d\n",
							s_tmp.len, s_tmp.s, lval_tmp->type);
			}
#line 10507 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 705:
#line 2918 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.intval) = ASSIGN_T; }
#line 10513 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 706:
#line 2922 "core/cfg.y" /* yacc.c:1646  */
    {
					lval_tmp=pkg_malloc(sizeof(*lval_tmp));
					if (!lval_tmp) {
						yyerror("Not enough memory");
						YYABORT;
					}
					lval_tmp->type=LV_AVP; lval_tmp->lv.avps=*(yyvsp[0].attr);
					pkg_free((yyvsp[0].attr)); /* free the avp spec we just copied */
					(yyval.lval)=lval_tmp;
				}
#line 10528 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 707:
#line 2932 "core/cfg.y" /* yacc.c:1646  */
    {
					if (!pv_is_w((yyvsp[0].pvar)))
						yyerror("read only pvar in assignment left side");
					if ((yyvsp[0].pvar)->trans!=0)
						yyerror("pvar with transformations in assignment"
								" left side");
					lval_tmp=pkg_malloc(sizeof(*lval_tmp));
					if (!lval_tmp) {
						yyerror("Not enough memory");
						YYABORT;
					}
					lval_tmp->type=LV_PVAR; lval_tmp->lv.pvs=(yyvsp[0].pvar);
					(yyval.lval)=lval_tmp;
				}
#line 10547 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 708:
#line 2946 "core/cfg.y" /* yacc.c:1646  */
    {
					if (((yyvsp[0].lval))->type==LV_PVAR){
						if (!pv_is_w((yyvsp[0].lval)->lv.pvs))
							yyerror("read only pvar in assignment left side");
						if ((yyvsp[0].lval)->lv.pvs->trans!=0)
							yyerror("pvar with transformations in assignment"
									" left side");
					}
					(yyval.lval)=(yyvsp[0].lval);
				}
#line 10562 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 709:
#line 2958 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.rv_expr)=mk_rve_rval(RV_INT, (void*)(yyvsp[0].intval)); }
#line 10568 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 710:
#line 2959 "core/cfg.y" /* yacc.c:1646  */
    {	s_tmp.s=(yyvsp[0].strval); s_tmp.len=strlen((yyvsp[0].strval));
							(yyval.rv_expr)=mk_rve_rval(RV_STR, &s_tmp); }
#line 10575 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 711:
#line 2961 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.rv_expr)=mk_rve_rval(RV_AVP, (yyvsp[0].attr)); pkg_free((yyvsp[0].attr)); }
#line 10581 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 712:
#line 2962 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.rv_expr)=mk_rve_rval(RV_PVAR, (yyvsp[0].pvar)); }
#line 10587 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 713:
#line 2963 "core/cfg.y" /* yacc.c:1646  */
    {
							switch((yyvsp[0].lval)->type){
								case LV_AVP:
									(yyval.rv_expr)=mk_rve_rval(RV_AVP, &(yyvsp[0].lval)->lv.avps);
									break;
								case LV_PVAR:
									(yyval.rv_expr)=mk_rve_rval(RV_PVAR, (yyvsp[0].lval)->lv.pvs);
									break;
								default:
									yyerror("BUG: invalid lvalue type ");
									YYABORT;
							}
							pkg_free((yyvsp[0].lval)); /* not needed anymore */
						}
#line 10606 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 714:
#line 2977 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.rv_expr)=mk_rve_rval(RV_SEL, (yyvsp[0].select)); pkg_free((yyvsp[0].select)); }
#line 10612 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 715:
#line 2978 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.rv_expr)=mk_rve_rval(RV_ACTION_ST, (yyvsp[0].action)); }
#line 10618 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 716:
#line 2979 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.rv_expr)=mk_rve_rval(RV_BEXPR, (yyvsp[0].expr)); }
#line 10624 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 717:
#line 2980 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.rv_expr)=mk_rve_rval(RV_ACTION_ST, (yyvsp[-1].action)); }
#line 10630 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 718:
#line 2981 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.rv_expr)=0; yyerror("bad command block"); }
#line 10636 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 719:
#line 2982 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.rv_expr)=mk_rve_rval(RV_ACTION_ST, (yyvsp[-1].action)); }
#line 10642 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 720:
#line 2983 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.rv_expr)=0; yyerror("bad expression"); }
#line 10648 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 721:
#line 2987 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.intval)=RVE_LNOT_OP; }
#line 10654 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 722:
#line 2988 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.intval)=RVE_BNOT_OP; }
#line 10660 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 723:
#line 2989 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.intval)=RVE_UMINUS_OP; }
#line 10666 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 724:
#line 3002 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.rv_expr)=(yyvsp[0].rv_expr);
										if ((yyval.rv_expr)==0){
											/*yyerror("out of memory\n");*/
											YYERROR;
										}
									}
#line 10677 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 725:
#line 3008 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.rv_expr)=mk_rve1((yyvsp[-1].intval), (yyvsp[0].rv_expr)); }
#line 10683 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 726:
#line 3009 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.rv_expr)=mk_rve1(RVE_INT_OP, (yyvsp[0].rv_expr)); }
#line 10689 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 727:
#line 3010 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.rv_expr)=mk_rve1(RVE_STR_OP, (yyvsp[0].rv_expr)); }
#line 10695 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 728:
#line 3011 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.rv_expr)=mk_rve2(RVE_PLUS_OP, (yyvsp[-2].rv_expr), (yyvsp[0].rv_expr)); }
#line 10701 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 729:
#line 3012 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.rv_expr)=mk_rve2(RVE_MINUS_OP, (yyvsp[-2].rv_expr), (yyvsp[0].rv_expr)); }
#line 10707 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 730:
#line 3013 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.rv_expr)=mk_rve2(RVE_MUL_OP, (yyvsp[-2].rv_expr), (yyvsp[0].rv_expr)); }
#line 10713 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 731:
#line 3014 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.rv_expr)=mk_rve2(RVE_DIV_OP, (yyvsp[-2].rv_expr), (yyvsp[0].rv_expr)); }
#line 10719 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 732:
#line 3015 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.rv_expr)=mk_rve2(RVE_MOD_OP, (yyvsp[-2].rv_expr), (yyvsp[0].rv_expr)); }
#line 10725 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 733:
#line 3016 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.rv_expr)=mk_rve2(RVE_BOR_OP, (yyvsp[-2].rv_expr),  (yyvsp[0].rv_expr)); }
#line 10731 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 734:
#line 3017 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.rv_expr)=mk_rve2(RVE_BAND_OP, (yyvsp[-2].rv_expr),  (yyvsp[0].rv_expr));}
#line 10737 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 735:
#line 3018 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.rv_expr)=mk_rve2(RVE_BXOR_OP, (yyvsp[-2].rv_expr),  (yyvsp[0].rv_expr));}
#line 10743 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 736:
#line 3019 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.rv_expr)=mk_rve2(RVE_BLSHIFT_OP, (yyvsp[-2].rv_expr),  (yyvsp[0].rv_expr));}
#line 10749 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 737:
#line 3020 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.rv_expr)=mk_rve2(RVE_BRSHIFT_OP, (yyvsp[-2].rv_expr),  (yyvsp[0].rv_expr));}
#line 10755 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 738:
#line 3021 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.rv_expr)=mk_rve2( (yyvsp[-1].intval), (yyvsp[-2].rv_expr), (yyvsp[0].rv_expr));}
#line 10761 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 739:
#line 3022 "core/cfg.y" /* yacc.c:1646  */
    {
			/* comparing with $null => treat as defined or !defined */
			if((yyvsp[0].rv_expr) != NULL && (yyvsp[0].rv_expr)->op==RVE_RVAL_OP && (yyvsp[0].rv_expr)->left.rval.type==RV_PVAR
					&& (yyvsp[0].rv_expr)->left.rval.v.pvs.type==PVT_NULL) {
				if((yyvsp[-1].intval)==RVE_DIFF_OP || (yyvsp[-1].intval)==RVE_IDIFF_OP
						|| (yyvsp[-1].intval)==RVE_STRDIFF_OP) {
					DBG("comparison with $null switched to notdefined operator\n");
					(yyval.rv_expr)=mk_rve1(RVE_DEFINED_OP, (yyvsp[-2].rv_expr));
				} else {
					DBG("comparison with $null switched to defined operator\n");
					(yyval.rv_expr)=mk_rve1(RVE_NOTDEFINED_OP, (yyvsp[-2].rv_expr));
				}
				/* free rve struct for $null */
				rve_destroy((yyvsp[0].rv_expr));
			} else {
				(yyval.rv_expr)=mk_rve2((yyvsp[-1].intval), (yyvsp[-2].rv_expr), (yyvsp[0].rv_expr));
			}
		}
#line 10784 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 740:
#line 3040 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.rv_expr)=mk_rve2(RVE_LAND_OP, (yyvsp[-2].rv_expr), (yyvsp[0].rv_expr));}
#line 10790 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 741:
#line 3041 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.rv_expr)=mk_rve2(RVE_LOR_OP, (yyvsp[-2].rv_expr), (yyvsp[0].rv_expr));}
#line 10796 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 742:
#line 3042 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.rv_expr)=(yyvsp[-1].rv_expr);}
#line 10802 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 743:
#line 3043 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.rv_expr)=mk_rve1(RVE_STRLEN_OP, (yyvsp[-1].rv_expr));}
#line 10808 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 744:
#line 3044 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.rv_expr)=mk_rve1(RVE_STREMPTY_OP, (yyvsp[-1].rv_expr));}
#line 10814 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 745:
#line 3045 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.rv_expr)=mk_rve1(RVE_DEFINED_OP, (yyvsp[0].rv_expr));}
#line 10820 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 746:
#line 3046 "core/cfg.y" /* yacc.c:1646  */
    {
				rve_tmp=mk_rve2(RVE_SELVALOPT_OP, (yyvsp[-3].rv_expr), (yyvsp[-1].rv_expr));
				if(rve_tmp == NULL) {
					(yyval.rv_expr)=0;
					yyerror("faild to create tenary target expression");
				}
				(yyval.rv_expr)=mk_rve2(RVE_SELVALEXP_OP, (yyvsp[-5].rv_expr), rve_tmp);
		}
#line 10833 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 747:
#line 3054 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.rv_expr)=0; yyerror("bad expression"); }
#line 10839 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 748:
#line 3055 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.rv_expr)=0; yyerror("bad expression"); }
#line 10845 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 749:
#line 3056 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.rv_expr)=0; yyerror("bad expression"); }
#line 10851 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 750:
#line 3057 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.rv_expr)=0; yyerror("bad expression"); }
#line 10857 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 751:
#line 3058 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.rv_expr)=0; yyerror("bad expression"); }
#line 10863 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 752:
#line 3059 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.rv_expr)=0; yyerror("bad expression"); }
#line 10869 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 753:
#line 3060 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.rv_expr)=0; yyerror("bad expression"); }
#line 10875 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 754:
#line 3061 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.rv_expr)=0; yyerror("bad expression"); }
#line 10881 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 755:
#line 3062 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.rv_expr)=0; yyerror("bad expression"); }
#line 10887 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 756:
#line 3063 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.rv_expr)=0; yyerror("bad expression"); }
#line 10893 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 757:
#line 3065 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.rv_expr)=0; yyerror("bad expression"); }
#line 10899 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 758:
#line 3067 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.rv_expr)=0; yyerror("bad expression"); }
#line 10905 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 759:
#line 3068 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.rv_expr)=0; yyerror("bad expression"); }
#line 10911 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 760:
#line 3069 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.rv_expr)=0; yyerror("bad expression"); }
#line 10917 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 761:
#line 3070 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.rv_expr)=0; yyerror("bad expression"); }
#line 10923 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 762:
#line 3071 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.rv_expr)=0; yyerror("bad expression"); }
#line 10929 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 763:
#line 3072 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.rv_expr)=0; yyerror("bad expression"); }
#line 10935 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 764:
#line 3073 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.rv_expr)=0; yyerror("bad expression"); }
#line 10941 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 765:
#line 3076 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=mk_action((yyvsp[-1].intval), 2, LVAL_ST, (yyvsp[-2].lval),
														 	  RVE_ST, (yyvsp[0].rv_expr));
											set_cfg_pos((yyval.action));
										}
#line 10950 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 766:
#line 3094 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.intval) = 1; }
#line 10956 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 767:
#line 3095 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.intval) = 0; }
#line 10962 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 768:
#line 3096 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.intval) = -1; }
#line 10968 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 769:
#line 3099 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=mk_action(FORWARD_T, 2, URIHOST_ST, 0, URIPORT_ST, 0); set_cfg_pos((yyval.action)); }
#line 10974 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 770:
#line 3100 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=mk_action(	FORWARD_T, 2, STRING_ST, (yyvsp[-1].strval), NUMBER_ST, 0); set_cfg_pos((yyval.action)); }
#line 10980 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 771:
#line 3101 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=mk_action(	FORWARD_T, 2, STRING_ST, (yyvsp[-1].strval), NUMBER_ST, 0); set_cfg_pos((yyval.action)); }
#line 10986 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 772:
#line 3102 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=mk_action(	FORWARD_T, 2, IP_ST, (void*)(yyvsp[-1].ipaddr), NUMBER_ST, 0); set_cfg_pos((yyval.action)); }
#line 10992 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 773:
#line 3103 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=mk_action(FORWARD_T, 2, STRING_ST, (yyvsp[-3].strval), NUMBER_ST, (void*)(yyvsp[-1].intval)); set_cfg_pos((yyval.action)); }
#line 10998 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 774:
#line 3104 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.action)=mk_action(FORWARD_T, 2, STRING_ST, (yyvsp[-3].strval), NUMBER_ST, (void*)(yyvsp[-1].intval)); set_cfg_pos((yyval.action)); }
#line 11004 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 775:
#line 3105 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=mk_action(FORWARD_T, 2, IP_ST, (void*)(yyvsp[-3].ipaddr), NUMBER_ST, (void*)(yyvsp[-1].intval)); set_cfg_pos((yyval.action)); }
#line 11010 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 776:
#line 3106 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=mk_action(FORWARD_T, 2, URIHOST_ST, 0, URIPORT_ST, 0); set_cfg_pos((yyval.action)); }
#line 11016 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 777:
#line 3107 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.action)=mk_action(FORWARD_T, 2, URIHOST_ST, 0, NUMBER_ST, (void*)(yyvsp[-1].intval)); set_cfg_pos((yyval.action)); }
#line 11022 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 778:
#line 3108 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=mk_action(FORWARD_T, 2, URIHOST_ST, 0, NUMBER_ST, 0); set_cfg_pos((yyval.action)); }
#line 11028 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 779:
#line 3109 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=0; yyerror("missing '(' or ')' ?"); }
#line 11034 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 780:
#line 3110 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=0; yyerror("bad forward argument"); }
#line 11040 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 781:
#line 3111 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=mk_action(FORWARD_UDP_T, 2, STRING_ST, (yyvsp[-1].strval), NUMBER_ST, 0); set_cfg_pos((yyval.action)); }
#line 11046 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 782:
#line 3112 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=mk_action(FORWARD_UDP_T, 2, STRING_ST, (yyvsp[-1].strval), NUMBER_ST, 0); set_cfg_pos((yyval.action)); }
#line 11052 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 783:
#line 3113 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=mk_action(FORWARD_UDP_T, 2, IP_ST, (void*)(yyvsp[-1].ipaddr), NUMBER_ST, 0); set_cfg_pos((yyval.action)); }
#line 11058 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 784:
#line 3114 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=mk_action(FORWARD_UDP_T, 2, STRING_ST, (yyvsp[-3].strval), NUMBER_ST, (void*)(yyvsp[-1].intval)); set_cfg_pos((yyval.action)); }
#line 11064 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 785:
#line 3115 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.action)=mk_action(FORWARD_UDP_T, 2, STRING_ST, (yyvsp[-3].strval), NUMBER_ST, (void*)(yyvsp[-1].intval)); set_cfg_pos((yyval.action)); }
#line 11070 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 786:
#line 3116 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=mk_action(FORWARD_UDP_T, 2, IP_ST, (void*)(yyvsp[-3].ipaddr), NUMBER_ST, (void*)(yyvsp[-1].intval)); set_cfg_pos((yyval.action)); }
#line 11076 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 787:
#line 3117 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.action)=mk_action(FORWARD_UDP_T, 2, URIHOST_ST, 0, URIPORT_ST, 0); set_cfg_pos((yyval.action)); }
#line 11082 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 788:
#line 3118 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=mk_action(FORWARD_UDP_T, 2, URIHOST_ST, 0, NUMBER_ST, (void*)(yyvsp[-1].intval)); set_cfg_pos((yyval.action)); }
#line 11088 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 789:
#line 3119 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=mk_action(FORWARD_UDP_T, 2, URIHOST_ST, 0, NUMBER_ST, 0); set_cfg_pos((yyval.action)); }
#line 11094 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 790:
#line 3120 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=0; yyerror("missing '(' or ')' ?"); }
#line 11100 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 791:
#line 3121 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=0; yyerror("bad forward_udp argument"); }
#line 11106 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 792:
#line 3122 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=mk_action(FORWARD_TCP_T, 2, STRING_ST, (yyvsp[-1].strval), NUMBER_ST, 0); set_cfg_pos((yyval.action)); }
#line 11112 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 793:
#line 3123 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=mk_action(FORWARD_TCP_T, 2, STRING_ST, (yyvsp[-1].strval), NUMBER_ST, 0); set_cfg_pos((yyval.action)); }
#line 11118 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 794:
#line 3124 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=mk_action(FORWARD_TCP_T, 2, IP_ST, (void*)(yyvsp[-1].ipaddr), NUMBER_ST, 0); set_cfg_pos((yyval.action)); }
#line 11124 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 795:
#line 3125 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=mk_action(FORWARD_TCP_T, 2, STRING_ST, (yyvsp[-3].strval), NUMBER_ST, (void*)(yyvsp[-1].intval)); set_cfg_pos((yyval.action)); }
#line 11130 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 796:
#line 3126 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.action)=mk_action(FORWARD_TCP_T, 2, STRING_ST, (yyvsp[-3].strval), NUMBER_ST, (void*)(yyvsp[-1].intval)); set_cfg_pos((yyval.action)); }
#line 11136 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 797:
#line 3127 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=mk_action(FORWARD_TCP_T, 2, IP_ST, (void*)(yyvsp[-3].ipaddr), NUMBER_ST, (void*)(yyvsp[-1].intval)); set_cfg_pos((yyval.action)); }
#line 11142 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 798:
#line 3128 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.action)=mk_action(FORWARD_TCP_T, 2, URIHOST_ST, 0, URIPORT_ST, 0); set_cfg_pos((yyval.action)); }
#line 11148 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 799:
#line 3129 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=mk_action(FORWARD_TCP_T, 2, URIHOST_ST, 0, NUMBER_ST, (void*)(yyvsp[-1].intval)); set_cfg_pos((yyval.action)); }
#line 11154 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 800:
#line 3130 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=mk_action(FORWARD_TCP_T, 2, URIHOST_ST, 0, NUMBER_ST, 0); set_cfg_pos((yyval.action)); }
#line 11160 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 801:
#line 3131 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=0; yyerror("missing '(' or ')' ?"); }
#line 11166 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 802:
#line 3132 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=0; yyerror("bad forward_tcp argument"); }
#line 11172 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 803:
#line 3133 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef USE_TLS
			(yyval.action)=mk_action(FORWARD_TLS_T, 2, STRING_ST, (yyvsp[-1].strval), NUMBER_ST, 0); set_cfg_pos((yyval.action));
		#else
			(yyval.action)=0;
			yyerror("tls support not compiled in");
		#endif
	}
#line 11185 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 804:
#line 3141 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef USE_TLS
			(yyval.action)=mk_action(FORWARD_TLS_T, 2, STRING_ST, (yyvsp[-1].strval), NUMBER_ST, 0); set_cfg_pos((yyval.action));
		#else
			(yyval.action)=0;
			yyerror("tls support not compiled in");
		#endif
	}
#line 11198 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 805:
#line 3149 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef USE_TLS
			(yyval.action)=mk_action(FORWARD_TLS_T, 2, IP_ST, (void*)(yyvsp[-1].ipaddr), NUMBER_ST, 0); set_cfg_pos((yyval.action));
		#else
			(yyval.action)=0;
			yyerror("tls support not compiled in");
		#endif
	}
#line 11211 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 806:
#line 3157 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef USE_TLS
			(yyval.action)=mk_action(FORWARD_TLS_T, 2, STRING_ST, (yyvsp[-3].strval), NUMBER_ST, (void*)(yyvsp[-1].intval)); set_cfg_pos((yyval.action));
		#else
			(yyval.action)=0;
			yyerror("tls support not compiled in");
		#endif
	}
#line 11224 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 807:
#line 3165 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef USE_TLS
			(yyval.action)=mk_action(FORWARD_TLS_T, 2, STRING_ST, (yyvsp[-3].strval), NUMBER_ST, (void*)(yyvsp[-1].intval)); set_cfg_pos((yyval.action));
		#else
			(yyval.action)=0;
			yyerror("tls support not compiled in");
		#endif
	}
#line 11237 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 808:
#line 3173 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef USE_TLS
			(yyval.action)=mk_action(FORWARD_TLS_T, 2, IP_ST, (void*)(yyvsp[-3].ipaddr), NUMBER_ST, (void*)(yyvsp[-1].intval)); set_cfg_pos((yyval.action));
		#else
			(yyval.action)=0;
			yyerror("tls support not compiled in");
		#endif
					}
#line 11250 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 809:
#line 3181 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef USE_TLS
			(yyval.action)=mk_action(FORWARD_TLS_T, 2, URIHOST_ST, 0, URIPORT_ST, 0); set_cfg_pos((yyval.action));
		#else
			(yyval.action)=0;
			yyerror("tls support not compiled in");
		#endif
	}
#line 11263 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 810:
#line 3189 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef USE_TLS
			(yyval.action)=mk_action(FORWARD_TLS_T, 2, URIHOST_ST, 0, NUMBER_ST, (void*)(yyvsp[-1].intval)); set_cfg_pos((yyval.action));
		#else
			(yyval.action)=0;
			yyerror("tls support not compiled in");
		#endif
	}
#line 11276 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 811:
#line 3197 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef USE_TLS
			(yyval.action)=mk_action(FORWARD_TLS_T, 2, URIHOST_ST, 0, NUMBER_ST, 0); set_cfg_pos((yyval.action));
		#else
			(yyval.action)=0;
			yyerror("tls support not compiled in");
		#endif
	}
#line 11289 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 812:
#line 3205 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=0; yyerror("missing '(' or ')' ?"); }
#line 11295 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 813:
#line 3206 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=0;
									yyerror("bad forward_tls argument"); }
#line 11302 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 814:
#line 3208 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef USE_SCTP
			(yyval.action)=mk_action(FORWARD_SCTP_T, 2, STRING_ST, (yyvsp[-1].strval), NUMBER_ST, 0); set_cfg_pos((yyval.action));
		#else
			(yyval.action)=0;
			yyerror("sctp support not compiled in");
		#endif
	}
#line 11315 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 815:
#line 3216 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef USE_SCTP
			(yyval.action)=mk_action(FORWARD_SCTP_T, 2, STRING_ST, (yyvsp[-1].strval), NUMBER_ST, 0); set_cfg_pos((yyval.action));
		#else
			(yyval.action)=0;
			yyerror("sctp support not compiled in");
		#endif
	}
#line 11328 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 816:
#line 3224 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef USE_SCTP
			(yyval.action)=mk_action(FORWARD_SCTP_T, 2, IP_ST, (void*)(yyvsp[-1].ipaddr), NUMBER_ST, 0); set_cfg_pos((yyval.action));
		#else
			(yyval.action)=0;
			yyerror("sctp support not compiled in");
		#endif
	}
#line 11341 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 817:
#line 3232 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef USE_SCTP
			(yyval.action)=mk_action(FORWARD_SCTP_T, 2, STRING_ST, (yyvsp[-3].strval), NUMBER_ST,
							(void*)(yyvsp[-1].intval)); set_cfg_pos((yyval.action));
		#else
			(yyval.action)=0;
			yyerror("sctp support not compiled in");
		#endif
	}
#line 11355 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 818:
#line 3241 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef USE_SCTP
			(yyval.action)=mk_action(FORWARD_SCTP_T, 2, STRING_ST, (yyvsp[-3].strval), NUMBER_ST,
							(void*)(yyvsp[-1].intval)); set_cfg_pos((yyval.action));
		#else
			(yyval.action)=0;
			yyerror("sctp support not compiled in");
		#endif
	}
#line 11369 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 819:
#line 3250 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef USE_SCTP
			(yyval.action)=mk_action(FORWARD_SCTP_T, 2, IP_ST, (void*)(yyvsp[-3].ipaddr), NUMBER_ST,
							(void*)(yyvsp[-1].intval)); set_cfg_pos((yyval.action));
		#else
			(yyval.action)=0;
			yyerror("sctp support not compiled in");
		#endif
					}
#line 11383 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 820:
#line 3259 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef USE_SCTP
			(yyval.action)=mk_action(FORWARD_SCTP_T, 2, URIHOST_ST, 0, URIPORT_ST, 0); set_cfg_pos((yyval.action));
		#else
			(yyval.action)=0;
			yyerror("sctp support not compiled in");
		#endif
	}
#line 11396 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 821:
#line 3267 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef USE_SCTP
			(yyval.action)=mk_action(FORWARD_SCTP_T, 2, URIHOST_ST, 0, NUMBER_ST,
							(void*)(yyvsp[-1].intval)); set_cfg_pos((yyval.action));
		#else
			(yyval.action)=0;
			yyerror("sctp support not compiled in");
		#endif
	}
#line 11410 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 822:
#line 3276 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef USE_SCTP
			(yyval.action)=mk_action(FORWARD_SCTP_T, 2, URIHOST_ST, 0, NUMBER_ST, 0); set_cfg_pos((yyval.action));
		#else
			(yyval.action)=0;
			yyerror("tls support not compiled in");
		#endif
	}
#line 11423 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 823:
#line 3284 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=0; yyerror("missing '(' or ')' ?"); }
#line 11429 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 824:
#line 3285 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=0;
									yyerror("bad forward_sctp argument"); }
#line 11436 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 825:
#line 3287 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.action)=mk_action(LOG_T, 2, NUMBER_ST,
										(void*)(L_DBG+1), STRING_ST, (yyvsp[-1].strval));
									set_cfg_pos((yyval.action)); }
#line 11444 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 826:
#line 3290 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.action)=mk_action(LOG_T, 2, NUMBER_ST, (void*)(yyvsp[-3].intval), STRING_ST, (yyvsp[-1].strval)); set_cfg_pos((yyval.action)); }
#line 11450 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 827:
#line 3291 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=0; yyerror("missing '(' or ')' ?"); }
#line 11456 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 828:
#line 3292 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=0; yyerror("bad log argument"); }
#line 11462 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 829:
#line 3293 "core/cfg.y" /* yacc.c:1646  */
    {
							if (check_flag((yyvsp[-1].intval))==-1)
								yyerror("bad flag value");
							(yyval.action)=mk_action(SETFLAG_T, 1, NUMBER_ST,
													(void*)(yyvsp[-1].intval));
							set_cfg_pos((yyval.action));
									}
#line 11474 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 830:
#line 3300 "core/cfg.y" /* yacc.c:1646  */
    {
							i_tmp=get_flag_no((yyvsp[-1].strval), strlen((yyvsp[-1].strval)));
							if (i_tmp<0) yyerror("flag not declared");
							(yyval.action)=mk_action(SETFLAG_T, 1, NUMBER_ST,
										(void*)(long)i_tmp);
							set_cfg_pos((yyval.action));
									}
#line 11486 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 831:
#line 3307 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=0; yyerror("missing '(' or ')'?"); }
#line 11492 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 832:
#line 3308 "core/cfg.y" /* yacc.c:1646  */
    {
							if (check_flag((yyvsp[-1].intval))==-1)
								yyerror("bad flag value");
							(yyval.action)=mk_action(RESETFLAG_T, 1, NUMBER_ST, (void*)(yyvsp[-1].intval));
							set_cfg_pos((yyval.action));
									}
#line 11503 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 833:
#line 3314 "core/cfg.y" /* yacc.c:1646  */
    {
							i_tmp=get_flag_no((yyvsp[-1].strval), strlen((yyvsp[-1].strval)));
							if (i_tmp<0) yyerror("flag not declared");
							(yyval.action)=mk_action(RESETFLAG_T, 1, NUMBER_ST,
										(void*)(long)i_tmp);
							set_cfg_pos((yyval.action));
									}
#line 11515 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 834:
#line 3321 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=0; yyerror("missing '(' or ')'?"); }
#line 11521 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 835:
#line 3322 "core/cfg.y" /* yacc.c:1646  */
    {
							if (check_flag((yyvsp[-1].intval))==-1)
								yyerror("bad flag value");
							(yyval.action)=mk_action(ISFLAGSET_T, 1, NUMBER_ST, (void*)(yyvsp[-1].intval));
							set_cfg_pos((yyval.action));
									}
#line 11532 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 836:
#line 3328 "core/cfg.y" /* yacc.c:1646  */
    {
							i_tmp=get_flag_no((yyvsp[-1].strval), strlen((yyvsp[-1].strval)));
							if (i_tmp<0) yyerror("flag not declared");
							(yyval.action)=mk_action(ISFLAGSET_T, 1, NUMBER_ST,
										(void*)(long)i_tmp);
							set_cfg_pos((yyval.action));
									}
#line 11544 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 837:
#line 3335 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=0; yyerror("missing '(' or ')'?"); }
#line 11550 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 838:
#line 3336 "core/cfg.y" /* yacc.c:1646  */
    {
		i_tmp=get_avpflag_no((yyvsp[-1].strval));
		if (i_tmp==0) yyerror("avpflag not declared");
		(yyval.action)=mk_action(AVPFLAG_OPER_T, 3, AVP_ST, (yyvsp[-3].attr), NUMBER_ST, (void*)(long)i_tmp, NUMBER_ST, (void*)(yyvsp[-5].intval));
		set_cfg_pos((yyval.action));
	}
#line 11561 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 839:
#line 3342 "core/cfg.y" /* yacc.c:1646  */
    {
		(yyval.action)=0; yyerror("error parsing flag name");
	}
#line 11569 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 840:
#line 3345 "core/cfg.y" /* yacc.c:1646  */
    {
		(yyval.action)=0; yyerror("error parsing first parameter (avp or string)");
	}
#line 11577 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 841:
#line 3348 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=0; yyerror("bad parameters"); }
#line 11583 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 842:
#line 3349 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=0; yyerror("missing '(' or ')'?"); }
#line 11589 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 843:
#line 3350 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.action)=mk_action(ERROR_T, 2, STRING_ST, (yyvsp[-3].strval), STRING_ST, (yyvsp[-1].strval));
			set_cfg_pos((yyval.action));
	}
#line 11597 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 844:
#line 3353 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=0; yyerror("missing '(' or ')' ?"); }
#line 11603 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 845:
#line 3354 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=0; yyerror("bad error argument"); }
#line 11609 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 846:
#line 3355 "core/cfg.y" /* yacc.c:1646  */
    {
		if ((yyvsp[-1].rv_expr)) {
			(yyval.action) = mk_action(ROUTE_T, 1, RVE_ST, (void*)(yyvsp[-1].rv_expr));
			set_cfg_pos((yyval.action));
		} else {
			(yyval.action) = 0;
			YYERROR;
		}
	}
#line 11623 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 847:
#line 3364 "core/cfg.y" /* yacc.c:1646  */
    {
		if ((yyvsp[-1].strval)) {
			(yyval.action) = mk_action(ROUTE_T, 1, STRING_ST, (void*)(yyvsp[-1].strval));
			set_cfg_pos((yyval.action));
		} else {
			(yyval.action) = 0;
			YYERROR;
		}
	}
#line 11637 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 848:
#line 3373 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=0; yyerror("missing '(' or ')' ?"); }
#line 11643 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 849:
#line 3374 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=0; yyerror("bad route argument"); }
#line 11649 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 850:
#line 3375 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=mk_action(EXEC_T, 1, STRING_ST, (yyvsp[-1].strval)); set_cfg_pos((yyval.action)); }
#line 11655 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 851:
#line 3376 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=mk_action(SET_HOST_T, 1, STRING_ST, (yyvsp[-1].strval)); set_cfg_pos((yyval.action)); }
#line 11661 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 852:
#line 3377 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=0; yyerror("missing '(' or ')' ?"); }
#line 11667 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 853:
#line 3378 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=0; yyerror("bad argument, string expected"); }
#line 11673 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 854:
#line 3379 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=mk_action(PREFIX_T, 1, STRING_ST,  (yyvsp[-1].strval)); set_cfg_pos((yyval.action)); }
#line 11679 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 855:
#line 3380 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=0; yyerror("missing '(' or ')' ?"); }
#line 11685 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 856:
#line 3381 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=0; yyerror("bad argument, string expected"); }
#line 11691 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 857:
#line 3382 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=mk_action(STRIP_TAIL_T, 1, NUMBER_ST, (void*)(yyvsp[-1].intval)); set_cfg_pos((yyval.action)); }
#line 11697 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 858:
#line 3383 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=0; yyerror("missing '(' or ')' ?"); }
#line 11703 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 859:
#line 3384 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=0; yyerror("bad argument, number expected"); }
#line 11709 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 860:
#line 3385 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=mk_action(STRIP_T, 1, NUMBER_ST, (void*) (yyvsp[-1].intval)); set_cfg_pos((yyval.action)); }
#line 11715 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 861:
#line 3386 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=0; yyerror("missing '(' or ')' ?"); }
#line 11721 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 862:
#line 3387 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=0; yyerror("bad argument, number expected"); }
#line 11727 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 863:
#line 3388 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=mk_action(SET_USERPHONE_T, 0); set_cfg_pos((yyval.action)); }
#line 11733 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 864:
#line 3389 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=0; yyerror("missing '(' or ')' ?"); }
#line 11739 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 865:
#line 3390 "core/cfg.y" /* yacc.c:1646  */
    {
			(yyval.action)=mk_action(REMOVE_BRANCH_T, 1, NUMBER_ST, (void*)(yyvsp[-1].intval));
			set_cfg_pos((yyval.action));
	}
#line 11748 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 866:
#line 3394 "core/cfg.y" /* yacc.c:1646  */
    {
			(yyval.action)=mk_action(REMOVE_BRANCH_T, 0);
			set_cfg_pos((yyval.action));
	}
#line 11757 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 867:
#line 3398 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=0; yyerror("missing '(' or ')' ?"); }
#line 11763 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 868:
#line 3399 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=0; yyerror("bad argument, number expected"); }
#line 11769 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 869:
#line 3400 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=mk_action(CLEAR_BRANCHES_T, 0); set_cfg_pos((yyval.action)); }
#line 11775 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 870:
#line 3401 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=mk_action(SET_HOSTPORT_T, 1, STRING_ST, (yyvsp[-1].strval)); set_cfg_pos((yyval.action)); }
#line 11781 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 871:
#line 3402 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=0; yyerror("missing '(' or ')' ?"); }
#line 11787 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 872:
#line 3403 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=0; yyerror("bad argument, string expected"); }
#line 11793 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 873:
#line 3404 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=mk_action(SET_HOSTPORTTRANS_T, 1, STRING_ST, (yyvsp[-1].strval)); set_cfg_pos((yyval.action)); }
#line 11799 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 874:
#line 3405 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=0; yyerror("missing '(' or ')' ?"); }
#line 11805 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 875:
#line 3406 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=0; yyerror("bad argument, string expected"); }
#line 11811 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 876:
#line 3407 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=mk_action(SET_PORT_T, 1, STRING_ST, (yyvsp[-1].strval)); set_cfg_pos((yyval.action)); }
#line 11817 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 877:
#line 3408 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=0; yyerror("missing '(' or ')' ?"); }
#line 11823 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 878:
#line 3409 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=0; yyerror("bad argument, string expected"); }
#line 11829 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 879:
#line 3410 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=mk_action(SET_USER_T, 1, STRING_ST, (yyvsp[-1].strval)); set_cfg_pos((yyval.action)); }
#line 11835 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 880:
#line 3411 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=0; yyerror("missing '(' or ')' ?"); }
#line 11841 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 881:
#line 3412 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=0; yyerror("bad argument, string expected"); }
#line 11847 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 882:
#line 3413 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=mk_action(SET_USERPASS_T, 1, STRING_ST, (yyvsp[-1].strval)); set_cfg_pos((yyval.action)); }
#line 11853 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 883:
#line 3414 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=0; yyerror("missing '(' or ')' ?"); }
#line 11859 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 884:
#line 3415 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=0; yyerror("bad argument, string expected"); }
#line 11865 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 885:
#line 3416 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=mk_action(SET_URI_T, 1, STRING_ST,(yyvsp[-1].strval)); set_cfg_pos((yyval.action)); }
#line 11871 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 886:
#line 3417 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=0; yyerror("missing '(' or ')' ?"); }
#line 11877 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 887:
#line 3418 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=0; yyerror("bad argument, string expected"); }
#line 11883 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 888:
#line 3419 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=mk_action(REVERT_URI_T, 0); set_cfg_pos((yyval.action)); }
#line 11889 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 889:
#line 3420 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=mk_action(REVERT_URI_T, 0); set_cfg_pos((yyval.action)); }
#line 11895 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 890:
#line 3421 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=mk_action(FORCE_RPORT_T, 0); set_cfg_pos((yyval.action)); }
#line 11901 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 891:
#line 3422 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.action)=mk_action(FORCE_RPORT_T, 0); set_cfg_pos((yyval.action)); }
#line 11907 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 892:
#line 3423 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=mk_action(ADD_LOCAL_RPORT_T, 0); set_cfg_pos((yyval.action)); }
#line 11913 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 893:
#line 3424 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.action)=mk_action(ADD_LOCAL_RPORT_T, 0); set_cfg_pos((yyval.action)); }
#line 11919 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 894:
#line 3425 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef USE_TCP
			(yyval.action)=mk_action(FORCE_TCP_ALIAS_T, 1, NUMBER_ST, (void*)(yyvsp[-1].intval));
			set_cfg_pos((yyval.action));
		#else
			yyerror("tcp support not compiled in");
		#endif
	}
#line 11932 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 895:
#line 3433 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef USE_TCP
			(yyval.action)=mk_action(FORCE_TCP_ALIAS_T, 0);
			set_cfg_pos((yyval.action));
		#else
			yyerror("tcp support not compiled in");
		#endif
	}
#line 11945 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 896:
#line 3441 "core/cfg.y" /* yacc.c:1646  */
    {
		#ifdef USE_TCP
			(yyval.action)=mk_action(FORCE_TCP_ALIAS_T, 0);
			set_cfg_pos((yyval.action));
		#else
			yyerror("tcp support not compiled in");
		#endif
	}
#line 11958 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 897:
#line 3449 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.action)=0; yyerror("bad argument, number expected"); }
#line 11964 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 898:
#line 3451 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=mk_action(UDP_MTU_TRY_PROTO_T, 1, NUMBER_ST, (yyvsp[-1].intval)); set_cfg_pos((yyval.action)); }
#line 11970 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 899:
#line 3453 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=0; yyerror("bad argument, UDP, TCP, TLS or SCTP expected"); }
#line 11976 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 900:
#line 3454 "core/cfg.y" /* yacc.c:1646  */
    {
		(yyval.action)=0;
		if ((str_tmp=pkg_malloc(sizeof(str)))==0) {
			PKG_MEM_CRITICAL;
		} else {
			str_tmp->s=(yyvsp[-1].strval);
			str_tmp->len=(yyvsp[-1].strval)?strlen((yyvsp[-1].strval)):0;
			(yyval.action)=mk_action(SET_ADV_ADDR_T, 1, STR_ST, str_tmp);
			set_cfg_pos((yyval.action));
		}
	}
#line 11992 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 901:
#line 3465 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=0; yyerror("bad argument, string expected"); }
#line 11998 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 902:
#line 3466 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.action)=0; yyerror("missing '(' or ')' ?"); }
#line 12004 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 903:
#line 3467 "core/cfg.y" /* yacc.c:1646  */
    {
		(yyval.action)=0;
		tmp=int2str((yyvsp[-1].intval), &i_tmp);
		if ((str_tmp=pkg_malloc(sizeof(str)))==0) {
			PKG_MEM_CRITICAL;
		} else {
			if ((str_tmp->s=pkg_malloc(i_tmp))==0) {
				PKG_MEM_CRITICAL;
			} else {
				memcpy(str_tmp->s, tmp, i_tmp);
				str_tmp->len=i_tmp;
				(yyval.action)=mk_action(SET_ADV_PORT_T, 1, STR_ST, str_tmp);
				set_cfg_pos((yyval.action));
			}
		}
	}
#line 12025 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 904:
#line 3483 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=0; yyerror("bad argument, string expected"); }
#line 12031 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 905:
#line 3484 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.action)=0; yyerror("missing '(' or ')' ?"); }
#line 12037 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 906:
#line 3485 "core/cfg.y" /* yacc.c:1646  */
    {
		(yyval.action)=mk_action(FORCE_SEND_SOCKET_T, 1, SOCKID_ST, (yyvsp[-1].sockid));
		set_cfg_pos((yyval.action));
	}
#line 12046 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 907:
#line 3489 "core/cfg.y" /* yacc.c:1646  */
    {
		(yyval.action)=0; yyerror("bad argument, [proto:]host[:port] expected");
	}
#line 12054 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 908:
#line 3492 "core/cfg.y" /* yacc.c:1646  */
    {(yyval.action)=0; yyerror("missing '(' or ')' ?"); }
#line 12060 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 909:
#line 3493 "core/cfg.y" /* yacc.c:1646  */
    {
		(yyval.action)=mk_action(SET_FWD_NO_CONNECT_T, 0); set_cfg_pos((yyval.action));
	}
#line 12068 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 910:
#line 3496 "core/cfg.y" /* yacc.c:1646  */
    {
		(yyval.action)=mk_action(SET_FWD_NO_CONNECT_T, 0); set_cfg_pos((yyval.action));
	}
#line 12076 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 911:
#line 3499 "core/cfg.y" /* yacc.c:1646  */
    {
		(yyval.action)=mk_action(SET_RPL_NO_CONNECT_T, 0); set_cfg_pos((yyval.action));
	}
#line 12084 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 912:
#line 3502 "core/cfg.y" /* yacc.c:1646  */
    {
		(yyval.action)=mk_action(SET_RPL_NO_CONNECT_T, 0); set_cfg_pos((yyval.action));
	}
#line 12092 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 913:
#line 3505 "core/cfg.y" /* yacc.c:1646  */
    {
		(yyval.action)=mk_action(SET_FWD_CLOSE_T, 0); set_cfg_pos((yyval.action));
	}
#line 12100 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 914:
#line 3508 "core/cfg.y" /* yacc.c:1646  */
    {
		(yyval.action)=mk_action(SET_FWD_CLOSE_T, 0); set_cfg_pos((yyval.action));
	}
#line 12108 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 915:
#line 3511 "core/cfg.y" /* yacc.c:1646  */
    {
		(yyval.action)=mk_action(SET_RPL_CLOSE_T, 0); set_cfg_pos((yyval.action));
	}
#line 12116 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 916:
#line 3514 "core/cfg.y" /* yacc.c:1646  */
    {
		(yyval.action)=mk_action(SET_RPL_CLOSE_T, 0); set_cfg_pos((yyval.action));
	}
#line 12124 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 917:
#line 3517 "core/cfg.y" /* yacc.c:1646  */
    {
		(yyval.action)=mk_action(CFG_SELECT_T, 2, STRING_ST, (yyvsp[-3].strval), NUMBER_ST, (void*)(yyvsp[-1].intval)); set_cfg_pos((yyval.action));
	}
#line 12132 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 918:
#line 3520 "core/cfg.y" /* yacc.c:1646  */
    {
		(yyval.action)=mk_action(CFG_SELECT_T, 2, STRING_ST, (yyvsp[-3].strval), RVE_ST, (yyvsp[-1].rv_expr)); set_cfg_pos((yyval.action));
	}
#line 12140 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 919:
#line 3523 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=0; yyerror("missing '(' or ')' ?"); }
#line 12146 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 920:
#line 3524 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=0; yyerror("bad arguments, string and number expected"); }
#line 12152 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 921:
#line 3525 "core/cfg.y" /* yacc.c:1646  */
    {
		(yyval.action)=mk_action(CFG_RESET_T, 1, STRING_ST, (yyvsp[-1].strval)); set_cfg_pos((yyval.action));
	}
#line 12160 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 922:
#line 3528 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=0; yyerror("missing '(' or ')' ?"); }
#line 12166 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 923:
#line 3529 "core/cfg.y" /* yacc.c:1646  */
    { (yyval.action)=0; yyerror("bad arguments, string expected"); }
#line 12172 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 924:
#line 3530 "core/cfg.y" /* yacc.c:1646  */
    {
		if (mod_func_action != NULL) {
			LM_ERR("function used inside params of another function: %s\n", (yyvsp[0].strval));
			yyerror("use of function execution inside params not allowed\n");
			ksr_exit(-1);
		}
		mod_func_action = mk_action(MODULE0_T, 2, MODEXP_ST, NULL, NUMBER_ST, 0);
		}
#line 12185 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 925:
#line 3537 "core/cfg.y" /* yacc.c:1646  */
    {
		mod_func_action->val[0].u.data =
			find_export_record((yyvsp[-4].strval), mod_func_action->val[1].u.number, rt);
		if (mod_func_action->val[0].u.data == 0) {
			if (find_export_record((yyvsp[-4].strval), mod_func_action->val[1].u.number, 0) ) {
					LM_ERR("misused command %s\n", (yyvsp[-4].strval));
					yyerror("Command cannot be used in the block\n");
			} else {
				LM_ERR("cfg. parser: failed to find command %s (params %ld)\n",
						(yyvsp[-4].strval), mod_func_action->val[1].u.number);
				yyerror("unknown command, missing loadmodule?\n");
			}
			free_mod_func_action(mod_func_action);
			mod_func_action=0;
		}else{
			if (mod_func_action && mod_f_params_pre_fixup(mod_func_action)<0) {
				/* error messages are printed inside the function */
				/* free_mod_func_action(mod_func_action); */
				mod_func_action = 0;
				YYERROR;
			}
		}
		(yyval.action) = mod_func_action;
		set_cfg_pos((yyval.action));
		mod_func_action = NULL;
	}
#line 12216 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 926:
#line 3563 "core/cfg.y" /* yacc.c:1646  */
    { yyerror("'('')' expected (function call)");}
#line 12222 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 928:
#line 3567 "core/cfg.y" /* yacc.c:1646  */
    { }
#line 12228 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 929:
#line 3568 "core/cfg.y" /* yacc.c:1646  */
    {}
#line 12234 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 930:
#line 3571 "core/cfg.y" /* yacc.c:1646  */
    {
		if ((yyvsp[0].rv_expr) && mod_func_action->val[1].u.number < MAX_ACTIONS-2) {
			mod_func_action->val[mod_func_action->val[1].u.number+2].type =
				RVE_ST;
			mod_func_action->val[mod_func_action->val[1].u.number+2].u.data =
				(yyvsp[0].rv_expr);
			mod_func_action->val[1].u.number++;
		} else if ((yyvsp[0].rv_expr)) {
			yyerror("Too many arguments\n");
			YYERROR;
		} else {
			YYERROR;
		}
	}
#line 12253 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 931:
#line 3588 "core/cfg.y" /* yacc.c:1646  */
    {
		(yyval.action)=mk_action(DROP_T, 2, NUMBER_ST, 0, NUMBER_ST,
						(void*)(DROP_R_F|EXIT_R_F)); set_cfg_pos((yyval.action));
	}
#line 12262 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 932:
#line 3592 "core/cfg.y" /* yacc.c:1646  */
    {
		(yyval.action)=mk_action(DROP_T, 2, RVE_ST, (yyvsp[0].rv_expr), NUMBER_ST,
						(void*)(DROP_R_F|EXIT_R_F)); set_cfg_pos((yyval.action));
	}
#line 12271 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 933:
#line 3596 "core/cfg.y" /* yacc.c:1646  */
    {
		(yyval.action)=mk_action(DROP_T, 2, NUMBER_ST, 0, NUMBER_ST,
						(void*)(DROP_R_F|EXIT_R_F)); set_cfg_pos((yyval.action));
	}
#line 12280 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 934:
#line 3600 "core/cfg.y" /* yacc.c:1646  */
    {
		(yyval.action)=mk_action(DROP_T, 2, NUMBER_ST, (void*)1, NUMBER_ST,
						(void*)EXIT_R_F);
		set_cfg_pos((yyval.action));
	}
#line 12290 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 935:
#line 3605 "core/cfg.y" /* yacc.c:1646  */
    {
		(yyval.action)=mk_action(DROP_T, 2, RVE_ST, (yyvsp[0].rv_expr), NUMBER_ST, (void*)EXIT_R_F);
		set_cfg_pos((yyval.action));
	}
#line 12299 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 936:
#line 3609 "core/cfg.y" /* yacc.c:1646  */
    {
		(yyval.action)=mk_action(DROP_T, 2, NUMBER_ST, (void*)1, NUMBER_ST,
						(void*)EXIT_R_F);
		set_cfg_pos((yyval.action));
	}
#line 12309 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 937:
#line 3614 "core/cfg.y" /* yacc.c:1646  */
    {
		(yyval.action)=mk_action(DROP_T, 2, NUMBER_ST, (void*)1, NUMBER_ST,
						(void*)RETURN_R_F); set_cfg_pos((yyval.action));
	}
#line 12318 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 938:
#line 3618 "core/cfg.y" /* yacc.c:1646  */
    {
		(yyval.action)=mk_action(DROP_T, 2, NUMBER_ST, (void*)1, NUMBER_ST,
						(void*)RETURN_R_F); set_cfg_pos((yyval.action));
	}
#line 12327 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 939:
#line 3622 "core/cfg.y" /* yacc.c:1646  */
    {
		(yyval.action)=mk_action(DROP_T, 2, RVE_ST, (yyvsp[0].rv_expr), NUMBER_ST, (void*)RETURN_R_F);
		set_cfg_pos((yyval.action));
	}
#line 12336 "core/cfg.tab.c" /* yacc.c:1646  */
    break;

  case 940:
#line 3626 "core/cfg.y" /* yacc.c:1646  */
    {
		(yyval.action)=mk_action(DROP_T, 2, NUMBER_ST, 0, NUMBER_ST, (void*)BREAK_R_F);
		set_cfg_pos((yyval.action));
	}
#line 12345 "core/cfg.tab.c" /* yacc.c:1646  */
    break;


#line 12349 "core/cfg.tab.c" /* yacc.c:1646  */
      default: break;
    }
  /* User semantic actions sometimes alter yychar, and that requires
     that yytoken be updated with the new translation.  We take the
     approach of translating immediately before every use of yytoken.
     One alternative is translating here after every semantic action,
     but that translation would be missed if the semantic action invokes
     YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
     if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
     incorrect destructor might then be invoked immediately.  In the
     case of YYERROR or YYBACKUP, subsequent parser actions might lead
     to an incorrect destructor call or verbose syntax error message
     before the lookahead is translated.  */
  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);

  YYPOPSTACK (yylen);
  yylen = 0;
  YY_STACK_PRINT (yyss, yyssp);

  *++yyvsp = yyval;

  /* Now 'shift' the result of the reduction.  Determine what state
     that goes to, based on the state we popped back to and the rule
     number reduced by.  */

  yyn = yyr1[yyn];

  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
    yystate = yytable[yystate];
  else
    yystate = yydefgoto[yyn - YYNTOKENS];

  goto yynewstate;


/*--------------------------------------.
| yyerrlab -- here on detecting error.  |
`--------------------------------------*/
yyerrlab:
  /* Make sure we have latest lookahead translation.  See comments at
     user semantic actions for why this is necessary.  */
  yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);

  /* If not already recovering from an error, report this error.  */
  if (!yyerrstatus)
    {
      ++yynerrs;
#if ! YYERROR_VERBOSE
      yyerror (YY_("syntax error"));
#else
# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
                                        yyssp, yytoken)
      {
        char const *yymsgp = YY_("syntax error");
        int yysyntax_error_status;
        yysyntax_error_status = YYSYNTAX_ERROR;
        if (yysyntax_error_status == 0)
          yymsgp = yymsg;
        else if (yysyntax_error_status == 1)
          {
            if (yymsg != yymsgbuf)
              YYSTACK_FREE (yymsg);
            yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
            if (!yymsg)
              {
                yymsg = yymsgbuf;
                yymsg_alloc = sizeof yymsgbuf;
                yysyntax_error_status = 2;
              }
            else
              {
                yysyntax_error_status = YYSYNTAX_ERROR;
                yymsgp = yymsg;
              }
          }
        yyerror (yymsgp);
        if (yysyntax_error_status == 2)
          goto yyexhaustedlab;
      }
# undef YYSYNTAX_ERROR
#endif
    }



  if (yyerrstatus == 3)
    {
      /* If just tried and failed to reuse lookahead token after an
         error, discard it.  */

      if (yychar <= YYEOF)
        {
          /* Return failure if at end of input.  */
          if (yychar == YYEOF)
            YYABORT;
        }
      else
        {
          yydestruct ("Error: discarding",
                      yytoken, &yylval);
          yychar = YYEMPTY;
        }
    }

  /* Else will try to reuse lookahead token after shifting the error
     token.  */
  goto yyerrlab1;


/*---------------------------------------------------.
| yyerrorlab -- error raised explicitly by YYERROR.  |
`---------------------------------------------------*/
yyerrorlab:

  /* Pacify compilers like GCC when the user code never invokes
     YYERROR and the label yyerrorlab therefore never appears in user
     code.  */
  if (/*CONSTCOND*/ 0)
     goto yyerrorlab;

  /* Do not reclaim the symbols of the rule whose action triggered
     this YYERROR.  */
  YYPOPSTACK (yylen);
  yylen = 0;
  YY_STACK_PRINT (yyss, yyssp);
  yystate = *yyssp;
  goto yyerrlab1;


/*-------------------------------------------------------------.
| yyerrlab1 -- common code for both syntax error and YYERROR.  |
`-------------------------------------------------------------*/
yyerrlab1:
  yyerrstatus = 3;      /* Each real token shifted decrements this.  */

  for (;;)
    {
      yyn = yypact[yystate];
      if (!yypact_value_is_default (yyn))
        {
          yyn += YYTERROR;
          if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
            {
              yyn = yytable[yyn];
              if (0 < yyn)
                break;
            }
        }

      /* Pop the current state because it cannot handle the error token.  */
      if (yyssp == yyss)
        YYABORT;


      yydestruct ("Error: popping",
                  yystos[yystate], yyvsp);
      YYPOPSTACK (1);
      yystate = *yyssp;
      YY_STACK_PRINT (yyss, yyssp);
    }

  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
  *++yyvsp = yylval;
  YY_IGNORE_MAYBE_UNINITIALIZED_END


  /* Shift the error token.  */
  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);

  yystate = yyn;
  goto yynewstate;


/*-------------------------------------.
| yyacceptlab -- YYACCEPT comes here.  |
`-------------------------------------*/
yyacceptlab:
  yyresult = 0;
  goto yyreturn;

/*-----------------------------------.
| yyabortlab -- YYABORT comes here.  |
`-----------------------------------*/
yyabortlab:
  yyresult = 1;
  goto yyreturn;

#if !defined yyoverflow || YYERROR_VERBOSE
/*-------------------------------------------------.
| yyexhaustedlab -- memory exhaustion comes here.  |
`-------------------------------------------------*/
yyexhaustedlab:
  yyerror (YY_("memory exhausted"));
  yyresult = 2;
  /* Fall through.  */
#endif

yyreturn:
  if (yychar != YYEMPTY)
    {
      /* Make sure we have latest lookahead translation.  See comments at
         user semantic actions for why this is necessary.  */
      yytoken = YYTRANSLATE (yychar);
      yydestruct ("Cleanup: discarding lookahead",
                  yytoken, &yylval);
    }
  /* Do not reclaim the symbols of the rule whose action triggered
     this YYABORT or YYACCEPT.  */
  YYPOPSTACK (yylen);
  YY_STACK_PRINT (yyss, yyssp);
  while (yyssp != yyss)
    {
      yydestruct ("Cleanup: popping",
                  yystos[*yyssp], yyvsp);
      YYPOPSTACK (1);
    }
#ifndef yyoverflow
  if (yyss != yyssa)
    YYSTACK_FREE (yyss);
#endif
#if YYERROR_VERBOSE
  if (yymsg != yymsgbuf)
    YYSTACK_FREE (yymsg);
#endif
  return yyresult;
}
#line 3632 "core/cfg.y" /* yacc.c:1906  */


static void get_cpos(struct cfg_pos* pos)
{
	pos->s_line=startline;
	pos->e_line=line;
	pos->s_col=startcolumn;
	pos->e_col=column-1;
	if(finame==0)
		finame = (cfg_file!=0)?cfg_file:"default";
	pos->fname=finame;
	pos->rname=(routename!=0)?routename:default_routename;
}


static void warn_at(struct cfg_pos* p, char* format, ...)
{
	va_list ap;
	char s[256];

	va_start(ap, format);
	vsnprintf(s, sizeof(s), format, ap);
	va_end(ap);
	if (p->e_line!=p->s_line)
		LM_WARN("warning in config file %s, from line %d, column %d to"
					" line %d, column %d: %s\n",
					p->fname, p->s_line, p->s_col, p->e_line, p->e_col, s);
	else if (p->s_col!=p->e_col)
		LM_WARN("warning in config file %s, line %d, column %d-%d: %s\n",
					p->fname, p->s_line, p->s_col, p->e_col, s);
	else
		LM_WARN("warning in config file %s, line %d, column %d: %s\n",
				p->fname, p->s_line, p->s_col, s);
	cfg_warnings++;
}



static void yyerror_at(struct cfg_pos* p, char* format, ...)
{
	va_list ap;
	char s[256];

	va_start(ap, format);
	vsnprintf(s, sizeof(s), format, ap);
	va_end(ap);
	if (p->e_line!=p->s_line)
		LM_CRIT("parse error in config file %s, from line %d, column %d"
					" to line %d, column %d: %s\n",
					p->fname, p->s_line, p->s_col, p->e_line, p->e_col, s);
	else if (p->s_col!=p->e_col)
		LM_CRIT("parse error in config file %s, line %d, column %d-%d: %s\n",
					p->fname, p->s_line, p->s_col, p->e_col, s);
	else
		LM_CRIT("parse error in config file %s, line %d, column %d: %s\n",
					p->fname, p->s_line, p->s_col, s);
	cfg_errors++;
}



static void warn(char* format, ...)
{
	va_list ap;
	char s[256];
	struct cfg_pos pos;

	get_cpos(&pos);
	va_start(ap, format);
	vsnprintf(s, sizeof(s), format, ap);
	va_end(ap);
	warn_at(&pos, s);
}



static void yyerror(char* format, ...)
{
	va_list ap;
	char s[256];
	struct cfg_pos pos;

	get_cpos(&pos);
	va_start(ap, format);
	vsnprintf(s, sizeof(s), format, ap);
	va_end(ap);
	yyerror_at(&pos, s);
}



/** mk_rval_expr_v wrapper.
 *  checks mk_rval_expr_v return value and sets the cfg. pos
 *  (line and column numbers)
 *  @return rval_expr* on success, 0 on error (@see mk_rval_expr_v)
 */
static struct rval_expr* mk_rve_rval(enum rval_type type, void* v)
{
	struct rval_expr* ret;
	struct cfg_pos pos;

	get_cpos(&pos);
	ret=mk_rval_expr_v(type, v, &pos);
	if (ret==0){
		yyerror("internal error: failed to create rval expr");
		/* YYABORT; */
	}
	return ret;
}


/** mk_rval_expr1 wrapper.
 *  checks mk_rval_expr1 return value (!=0 and type checking)
 *  @return rval_expr* on success, 0 on error (@see mk_rval_expr1)
 */
static struct rval_expr* mk_rve1(enum rval_expr_op op, struct rval_expr* rve1)
{
	struct rval_expr* ret;
	struct rval_expr* bad_rve;
	enum rval_type type, bad_t, exp_t;

	if (rve1==0)
		return 0;
	ret=mk_rval_expr1(op, rve1, &rve1->fpos);
	if (ret && (rve_check_type(&type, ret, &bad_rve, &bad_t, &exp_t)!=1)){
		yyerror_at(&rve1->fpos, "bad expression: type mismatch"
					" (%s instead of %s)", rval_type_name(bad_t),
					rval_type_name(exp_t));
		rve_destroy(ret);
		ret=0;
	}
	return ret;
}


/** mk_rval_expr2 wrapper.
 *  checks mk_rval_expr2 return value (!=0 and type checking)
 *  @return rval_expr* on success, 0 on error (@see mk_rval_expr2)
 */
static struct rval_expr* mk_rve2(enum rval_expr_op op, struct rval_expr* rve1,
									struct rval_expr* rve2)
{
	struct rval_expr* ret;
	struct rval_expr* bad_rve;
	enum rval_type type, bad_t, exp_t;
	struct cfg_pos pos;

	if ((rve1==0) || (rve2==0))
		return 0;
	bad_rve=0;
	bad_t=0;
	exp_t=0;
	cfg_pos_join(&pos, &rve1->fpos, &rve2->fpos);
	ret=mk_rval_expr2(op, rve1, rve2, &pos);
	if (ret && (rve_check_type(&type, ret, &bad_rve, &bad_t, &exp_t)!=1)){
		if (bad_rve)
			yyerror_at(&pos, "bad expression: type mismatch:"
						" %s instead of %s at (%d,%d)",
						rval_type_name(bad_t), rval_type_name(exp_t),
						bad_rve->fpos.s_line, bad_rve->fpos.s_col);
		else
			yyerror("BUG: unexpected null \"bad\" expression\n");
		rve_destroy(ret);
		ret=0;
	}
	return ret;
}


/** check if the expression is an int.
 * if the expression does not evaluate to an int return -1 and
 * log an error.
 * @return 0 success, no warnings; 1 success but warnings; -1 on error */
static int rval_expr_int_check(struct rval_expr *rve)
{
	struct rval_expr* bad_rve;
	enum rval_type type, bad_t, exp_t;

	if (rve==0){
		yyerror("invalid expression");
		return -1;
	}else if (!rve_check_type(&type, rve, &bad_rve, &bad_t ,&exp_t)){
		if (bad_rve)
			yyerror_at(&rve->fpos, "bad expression: type mismatch:"
						" %s instead of %s at (%d,%d)",
						rval_type_name(bad_t), rval_type_name(exp_t),
						bad_rve->fpos.s_line, bad_rve->fpos.s_col);
		else
			yyerror("BUG: unexpected null \"bad\" expression\n");
		return -1;
	}else if (type!=RV_INT && type!=RV_NONE){
		warn_at(&rve->fpos, "non-int expression (you might want to use"
				" casts)\n");
		return 1;
	}
	return 0;
}


/** warn if the expression is constant.
 * @return 0 on success (no warning), 1 when warning */
static int warn_ct_rve(struct rval_expr *rve, char* name)
{
	if (rve && rve_is_constant(rve)){
		warn_at(&rve->fpos, "constant value in %s%s",
				name?name:"expression", name?"(...)":"");
		return 1;
	}
	return 0;
}


static struct name_lst* mk_name_lst(char* host, int flags)
{
	struct name_lst* l;
	if (host==0) return 0;
	l=pkg_malloc(sizeof(struct name_lst));
	if (l==0) {
		PKG_MEM_CRITICAL;
	} else {
		memset(l, 0, sizeof(struct name_lst));
		l->name=host;
		l->flags=flags;
		l->next=0;
	}
	return l;
}


static struct socket_id* mk_listen_id(char* host, int proto, int port)
{
	struct socket_id* l;
	if (host==0) return 0;
	l=pkg_malloc(sizeof(struct socket_id));
	if (l==0) {
		PKG_MEM_CRITICAL;
	} else {
		memset(l, 0, sizeof(struct socket_id));
		l->addr_lst=mk_name_lst(host, 0);
		if (l->addr_lst==0){
			pkg_free(l);
			return 0;
		}
		l->flags=0;
		l->port=port;
		l->proto=proto;
		l->next=0;
	}
	return l;
}


static void free_name_lst(struct name_lst* lst)
{
	struct name_lst* tmp;

	while(lst){
		tmp=lst;
		lst=lst->next;
		pkg_free(tmp);
	}
}


static struct socket_id* mk_listen_id2(struct name_lst* addr_l, int proto,
										int port)
{
	struct socket_id* l;
	if (addr_l==0) return 0;
	l=pkg_malloc(sizeof(struct socket_id));
	if (l==0) {
		PKG_MEM_CRITICAL;
	} else {
		memset(l, 0, sizeof(struct socket_id));
		l->flags=addr_l->flags;
		l->port=port;
		l->proto=proto;
		l->addr_lst=addr_l;
		l->next=0;
	}
	return l;
}


static void free_socket_id(struct socket_id* i)
{
	free_name_lst(i->addr_lst);
	pkg_free(i);
}


static void free_socket_id_lst(struct socket_id* lst)
{
	struct socket_id* tmp;

	while(lst){
		tmp=lst;
		lst=lst->next;
		free_socket_id(tmp);
	}
}


/** create a temporary case statmenet structure.
 *  *err will be filled in case of error (return == 0):
 *   -1 - non constant expression
 *   -2 - expression error (bad type)
 *   -10 - memory allocation error
 */
static struct case_stms* mk_case_stm(struct rval_expr* ct, int is_re,
											struct action* a, int* err)
{
	struct case_stms* s;
	struct rval_expr* bad_rve;
	enum rval_type type, bad_t, exp_t;
	enum match_str_type t;

	t=MATCH_UNKNOWN;
	if (ct){
		/* if ct!=0 => case, else if ct==0 is a default */
		if (!rve_is_constant(ct)){
			yyerror_at(&ct->fpos, "non constant expression in case");
			*err=-1;
			return 0;
		}
		if (rve_check_type(&type, ct, &bad_rve, &bad_t, &exp_t)!=1){
			yyerror_at(&ct->fpos, "bad expression: type mismatch:"
							" %s instead of %s at (%d,%d)",
							rval_type_name(bad_t), rval_type_name(exp_t),
							bad_rve->fpos.s_line, bad_rve->fpos.s_col);
			*err=-2;
			return 0;
		}
		if (is_re)
			t=MATCH_RE;
		else if (type==RV_STR)
			t=MATCH_STR;
		else
			t=MATCH_INT;
	}

	s=pkg_malloc(sizeof(*s));
	if (s==0) {
		yyerror("internal error: memory allocation failure");
		*err=-10;
	} else {
		memset(s, 0, sizeof(*s));
		s->ct_rve=ct;
		s->type=t;
		s->actions=a;
		s->next=0;
		s->append=0;
	}
	return s;
}


/*
 * @return 0 on success, -1 on error.
 */
static int case_check_type(struct case_stms* stms)
{
	struct case_stms* c;
	struct case_stms* s;

	for(c=stms; c ; c=c->next){
		if (!c->ct_rve) continue;
		for (s=c->next; s; s=s->next){
			if (!s->ct_rve) continue;
			if ((s->type!=c->type) &&
				!(	(c->type==MATCH_STR || c->type==MATCH_RE) &&
					(s->type==MATCH_STR || s->type==MATCH_RE) ) ){
					yyerror_at(&s->ct_rve->fpos, "type mismatch in case");
					return -1;
			}
		}
	}
	return 0;
}


/*
 * @return 0 on success, -1 on error.
 */
static int case_check_default(struct case_stms* stms)
{
	struct case_stms* c;
	int default_no;

	default_no=0;
	for(c=stms; c ; c=c->next)
		if (c->ct_rve==0) default_no++;
	return (default_no<=1)?0:-1;
}



/** fixes the parameters and the type of a module function call.
 * It is done here instead of fix action, to have quicker feedback
 * on error cases (e.g. passing a non constant to a function with a
 * declared fixup)
 * The rest of the fixup is done inside do_action().
 * @param a - filled module function call (MODULE*_T) action structure
 *            complete with parameters, starting at val[2] and parameter
 *            number at val[1].
 * @return 0 on success, -1 on error (it will also print the error msg.).
 *
 */
static int mod_f_params_pre_fixup(struct action* a)
{
	ksr_cmd_export_t* cmd_exp;
	action_u_t* params;
	int param_no;
	struct rval_expr* rve;
	struct rvalue* rv;
	int r;
	str s;

	cmd_exp = a->val[0].u.data;
	param_no = a->val[1].u.number;
	params = &a->val[2];

	switch(cmd_exp->param_no) {
		case 0:
			a->type = MODULE0_T;
			break;
		case 1:
			a->type = MODULE1_T;
			break;
		case 2:
			a->type = MODULE2_T;
			break;
		case 3:
			a->type = MODULE3_T;
			break;
		case 4:
			a->type = MODULE4_T;
			break;
		case 5:
			a->type = MODULE5_T;
			break;
		case 6:
			a->type = MODULE6_T;
			break;
		case VAR_PARAM_NO:
			a->type = MODULEX_T;
			break;
		default:
			yyerror("function %s: bad definition"
					" (invalid number of parameters)", cmd_exp->name);
			return -1;
	}

	if ( cmd_exp->fixup) {
		if (is_fparam_rve_fixup(cmd_exp->fixup))
			/* mark known fparam rve safe fixups */
			cmd_exp->fixup_flags  |= FIXUP_F_FPARAM_RVE;
		else if (!(cmd_exp->fixup_flags & FIXUP_F_FPARAM_RVE) &&
				 cmd_exp->free_fixup == 0) {
			/* v0 or v1 functions that have fixups and no coresp. fixup_free
			   functions, need constant, string params.*/
			for (r=0; r < param_no; r++) {
				rve=params[r].u.data;
				if (!rve_is_constant(rve)) {
					yyerror_at(&rve->fpos, "function %s: parameter %d is not"
								" constant\n", cmd_exp->name, r+1);
					return -1;
				}
				if ((rv = rval_expr_eval(0, 0, rve)) == 0 ||
						rval_get_str(0, 0, &s, rv, 0) < 0 ) {
					/* out of mem or bug ? */
					rval_destroy(rv);
					yyerror_at(&rve->fpos, "function %s: bad parameter %d"
									" expression\n", cmd_exp->name, r+1);
					return -1;
				}
				rval_destroy(rv);
				rve_destroy(rve);
				params[r].type = STRING_ST; /* asciiz */
				params[r].u.string = s.s;
				params[r].u.str.len = s.len; /* not used right now */
			}
		}
	}/* else
		if no fixups are present, the RVEs can be transformed
		into strings at runtime, allowing seamless var. use
		even with old functions.
		Further optimizations -> in fix_actions()
		*/
	return 0;
}



/** frees a filled module function call action structure.
 * @param a - filled module function call action structure
 *            complete with parameters, starting at val[2] and parameter
 *            number at val[1].
 */
static void free_mod_func_action(struct action* a)
{
	action_u_t* params;
	int param_no;
	int r;

	param_no = a->val[1].u.number;
	params = &a->val[2];

	for (r=0; r < param_no; r++)
		if (params[r].u.data)
			rve_destroy(params[r].u.data);
	pkg_free(a);
}



/*
int main(int argc, char ** argv)
{
	if (yyparse()!=0)
		fprintf(stderr, "parsing error\n");
}
*/
